任务调度
作用:定时调度执行脚本或者代码,如定时调用 备份mysql 数据;对于简单的任务,可以不用编写脚本,直接在crontab中加入任务
任务调度:系统在某个时间执行特定的命令或程序
任务调度分类
- 系统工作,有些重要的任务需要定期执行,如病毒扫描
- 个别用户工作,用户希望执行某些程序,如对mysql进行备份
# crontab 定时任务设置
基本语法
- crontab [选项]
选项
- -e 编辑crontab定时任务
- -l 查询crontab任务
- -r 删除当前用户所有的crontab任务
# 入门使用
需求
- 设置任务调度文件 /etc/crontab
- 设置个人任务调度,执行crontab -e 命令
- 输入任务到调度文件
- 如 */1 * * * * ls -l /etc >> /tmp/to.txt
- 每个小时,每分钟执行 ls -l /etc >> /tmp/to.txt 命令
步骤
- crontab -e
- */1 * * * * ls -l /etc >> /tmp/to.txt
- 保存成功后退出程序
- 观察每一分钟都会自动调用 ls -l /etc >> /tmp/to.txt
# cron 表达式说明
使用cron表达式+命令
说明
- 第一个* 一小时当中的第几分钟 0-59
- 第二个* 一天当中的第几个小时 0-23
- 第三个* 一个月当中第几天 1-31
- 第四个* 一年当中第几个月 1-12
- 第五个* 一周当中星期几 0-7(0和7都表示周日)
特殊符号
*
表示任何时间,如第一个*就表示一小时中,每分钟都执行一次,
表示不连续的时间,如"0 8,16,20 * * *",表示每日8点,16点,20点执行一次`-` 表示连续的时间范围,如"0 5 * * 1-6",表示周一到周六每日5点执行一次
`*/n` 表示每隔多久执行一次,如"*/10 * * * *",表示每隔10分钟执行一次
应用实例
- 45 22 * * * 每日22点45分执行
- 0 17 * * 1 每周一17点执行
- 0 5 1,15 * * 每个月1号,15号,5点执行
- 40 4 * * 1-5 周一到周五4点40执行
- */10 4 * * * 每日4点每10分钟执行一次
- 0 0 1,15 * 1 每个月1号,15号,周一,0点都执行,注意:星期和几号不要同时出现,都是定义天,容易混乱
# 应用案例
每隔1min 将当前日期信息追加到/tmp/mydate文件中
- 先编写一个shell,/home/mytask.sh
date >> /tmp/mydate
1- 给 /home/mytask.sh一个执行权限
chmod 744 /home/mytask.sh
1- crontab -e
- */1 * * * * /home/mytask.sh
每隔1min,将当前日期和日历追加到 /tmp/mycal 文件中
- 先编写一个shell文件 /home/mytask2.sh
date >> /tmp/mycal cal >> /tmp/mycal
1
2- 给 /home/mytask2.sh 赋予执行权限
chmod 744 /home/mytask2.sh
1- crontab -e
- */1 * * * * /home/mytask2.sh
每日凌晨2点,将mysql数据testdb 备份到文件中mydb.bak
- 先编写一个文件 /home/task3.sh
/usr/local/mysql/bin/mysqldump -u root -p root testdb > /tmp/mydb.bak
1- 给/home/task3.sh 一个执行权限
chmod 744 /home/task3.sh
1- crontab -e
- 0 2 * * * /home/task3.sh
# crond 相关指令
- crontab -l:列出当前有哪些任务调度
- crontab -r:终止任务调度
- service crond restart:重启任务调度
Last Updated: 2022/03/20, 10:04:55