crontab定时任务
[root@master ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# 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
取值范围(常识):
分:0~59
时:0~23
日:1~31
月:1~12
周:0~6,0 和 7 表示星期天
四个符号:
*:表示取值范围中的每一个数字
-:做连续区间表达式的,要想表示1~7,则可以写成:1-7
/:表示每多少个,例如:想每 10 分钟一次,则可以在分的位置写:*/10
,:表示多个取值,比如想在 1 点,2 点 6 点执行,则可以在时的位置写:1,2,6
1.写入计划任务
crontab -e
2.计划列表
crontab -l
3.crontab黑名单
crontab是任何用户都可以创建的计划任务,但是超级管理员可以通过配置来设置某些用户不允许设置计划任务 。
黑名单配置文件位于/etc/cron.deny里面写用户名,一行只能写一个
4.crontab白名单
# 添加白名单后,会立即更新权限
白名单也有一个配置文件,/etc/cron.allow (本身不存在,自己创建)
注意:白名单优先级高于黑名单,如果一个用户同时存在两个名单文件中,则会被默认允许创建计划任务。
5.以root用户给其他用户创建定时任务
crontab -u 其他用户名 -e
6.crontab中的定时任务有时候没有成功执行
看 /var/log/cron.log这个文件就可以,可以用 tail -f /var/log/cron 观察
练习:
问题1:每月1、10、22 日的4:45 重启network 服务
45 4 1,10,22 * * service network restart
问题2:每周六、周日的下午1:10 重启network 服务
10 1 * * 6,7 service network restart
问题3:每天18:00 至23:00 之间每隔30 分钟重启network 服务
*/30 18-23 * * * service network restart
问题4:每隔两天的上午8点到11点的第3和第15分钟执行一次重启network 服务
3,15 8-11 */2 * * service network restart
问题5 :每天凌晨整点重启network 服务
0 0 * * * service network restart
问题6:每周4的凌晨2点15分执行重启network 服务
15 2 * * 4
问题7:工作日的工作时间内的每小时整点执行重启network 服务
0 9-18 * * 1-5
问题8:每1分钟向文件里写入一句话"超哥666",且实时监测文件内容变化。
* * * * *
问题9:每天凌晨2点30,执行ntpdate命令同步ntp.aliyun.com,且不输出任何信息,把命令结果,重定向到黑洞文件
30 2 * * * ntpdate -u ntp.aliyun.com &> /dev/null