crontab命令设置定时任务执行的时间规则,系统自动周期性执行命令。
这里我们就可以自定义脚本,然后设置定时执行脚本,达到我们想要在服务器定时执行的目标。
检查当前任务列表,同时查看是否安装了crontab
crontab -l
如果提示未安装,就需要自行安装(crontabs)
yum install crontabs
服务启动/关闭和查看
systemctl status crond
systemctl start crond
systemctl stop crond
systemctl reload crond
使用选项
-e 选项 表示打开当前用户的crontab任务列表配置文件。当然也可以直接打开,路径通常是在/var/spool/cron/下,文件以用户名命名,如/var/spool/cron/root。不过,采用-e方式打开,福利是可以帮助我们自动检查任务配置符合规则。
-u 选项 指定某用户的任务列表,很好理解。比如我当前是root用户,想操作poloxue用户的任务列表。如下:
$ crontab -u poloxue -e
-l 选项 列出某用户的所有任务列表
-r 选项 删除某用户的所有任务列表,这个选项使用小心为上,估计也只是自己实验时玩玩而已,正常不使用。
任务配置
示例文件如下:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# 更多细节 man 4 crontabs
# 计划任务定义的例子:
# .---------------- 分 (0 - 59)
# | .------------- 时 (0 - 23)
# | | .---------- 日 (1 - 31)
# | | | .------- 月 (1 - 12)
# | | | | .---- 星期 (0 - 7) (星期日可为0或7)
# | | | | |
# * * * * * 执行的命令
* * * * * date >> /time.txt 2>&1
时间例子:
30 21 * * * /etc/init.d/nginx restart
每晚的21:30重启nginx。
45 4 1,10,22 * * /etc/init.d/nginx restart
每月1、10、22日的4 : 45重启nginx。
10 1 * * 6,0 /etc/init.d/nginx restart
每周六、周日的1 : 10重启nginx。
0,30 18-23 * * * /etc/init.d/nginx restart
每天18 : 00至23 : 00之间每隔30分钟重启nginx。
0 23 * * 6 /etc/init.d/nginx restart
每星期六晚上的23 : 00 pm重启nginx。
* */1 * * * /etc/init.d/nginx restart
每一小时重启nginx
* 23-7/1 * * * /etc/init.d/nginx restart
晚上11点到早上7点之间,每 隔一小时重启nginx
0 11 4 * mon-wed /etc/init.d/nginx restart
每月的4号与每周一到周三 的11点重启nginx
0 4 1 jan * /etc/init.d/nginx restart
一月一号的4点重启nginx
*/30 * * * * /usr/sbin/ntpdate 210.72.145.20
每30分钟(半小时)同步一下时间