Linux 任务计划
crontab
crontab 命令从输入设备读取指令,并将其存放于 crontab 文件中,以供之后读取和执行。通常,crontab 储存的指令被守护进程激活,crond 为其守护进程,crond 常常在后台运行,每一分钟会检查一次是否有预定的作业需要执行。
crontab 格式
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
crontab 使用
# 部署
# 每个用户使用 crontab -e 添加计划任务,都会在 /var/spool/cron/crontabs 中添加一个该用户自己的任务文档,这样目的是为了隔离。
crontab -e
# 每隔2分钟输出时间到文件,其它的在例子中
*/2 * * * * echo `date` >> $HOME>test.txt
# 查看添加的任务
crontab -l
# 删除任务
crontab -r
# 查看是否在后台成功启动
ps aux | grep cron
crontab 目录
/etc/cron.daily,目录下的脚本会每天执行一次,在每天的 6 点 25 分时运行;
/etc/cron.hourly,目录下的脚本会每个小时执行一次,在每小时的 17 分钟时运行;
/etc/cron.monthly,目录下的脚本会每月执行一次,在每月 1 号的 6 点 52 分时运行;
/etc/cron.weekly,目录下的脚本会每周执行一次,在每周第七天的 6 点 47 分时运行;
例子
30 21 * * * command #每晚的21:30
45 4 1,10,22 * * command #每月1、10、22日的4 : 45
10 1 * * 6,0 command #每周六、周日的1 : 10重启apache
0,30 18-23 * * * command #每天18 : 00至23 : 00之间每隔30分钟
0 23 * * 6 command #每星期六的11 : 00 pm
* */1 * * * command #每一小时重启apache
* 23-7/1 * * * command #晚上11点到早上7点之间,每隔一小时重启apache
0 11 4 * mon-wed command #每月的4号与每周一到周三的11点重启apache
0 4 1 jan * command #一月一号的4点重启apache
时间计算工具 https://tool.lu/crontab/