2、crontab
命令crontab用来设置、移除、列出服务crond表格,crond服务的作用类似atd,区别的地方在于crond可以设置任务多次执行。相对来说比atd更常用。
同样需要启动服务crond
[root@centos7 temp]# ps -ef|grep [c]rond root 733 1 0 12月20 ? 00:00:00 /usr/sbin/crond -n
系统中每个用户都可以拥有自己的cron table,同atd类似,crond也有两个文件/etc/cron.allow和/etc/cron.deny用来限制用户使用cron,规则也和atd的两个文件相同。
选项-l表示列出当前用户的cron表项
选项-u表示指定用户
[root@centos7 ~]# crontab -l -u learner no crontab for learner [root@centos7 ~]#
选项-e表示编辑用户的cron table。编辑时系统会选定默认编辑器,在笔者的环境中是vi
通过直接编辑文件/etc/crontab可以设置系统级别的cron table。
使用crontab -e的方式编辑时,会在/tmp下面生成一个临时文件,保存后crond会将内容写入到/var/spool/cron下面一个和用户名同名的文件中,crond会在保存时做语法检查。这也是推荐的设置定时任务的用法。
语法:
* * * * * command
每一行表示一个任务,以符号#开头的行表示注释,不生效。每个生效行都形如上面所示,一行被分为6部分,其中:
第一部分表示分钟(0-59),* 表示每分钟
第二部分表示小时(0-23),* 表示每小时
第三部分表示日(1-31), * 表示每天
第四部分表示月(1-12), * 表示每月
第五部分表示周几(0-6,0表示周日),* 表示一周中每天
第六部分表示要执行的任务
关于时间设置的前五部分中,除了*表示当前部分的任意时间外,还支持另外三个符号/、,、-分别表示每隔、时间点A和时间点B、时间点A到时间点B。
如每隔3分钟测试10.0.1.252的连通性,并将结果追加输出到/root/252.log中
[root@centos7 ~]# crontab -e */3 * * * * /usr/bin/ping -c1 10.0.1.252 &>> /root/252.log
保存后会有crontab: installing new crontab字样出现。注意六个部分都不能为空,命令最好写绝对路径,编辑普通用户的定时任务时,要注意命令的执行权限。
如一月份到五月份,每周2和周5凌晨2:30执行备份任务
30 2 * 1-5 2,5 /bin/bash /root/temp/backup.sh
这里将备份任务写入到脚本/root/temp/backup.sh中执行
如3-6月和9-12月,每周一到周五12点到14点,每2分钟执行一次刷新任务
*/2 12-14 * 3-6,9-12 1-5 /bin/bash /root/temp/refresh.sh
混合使用日期时间及特殊符号,可以组合出大多数想要的时间。
查看定时任务
[root@centos7 ~]# crontab -l */3 * * * * /usr/bin/ping -c1 10.0.1.252 &>> /root/252.log 30 2 * 1-5 2,5 /bin/bash /root/temp/backup.sh */2 12-14 * 3-6,9-12 1-5 /bin/bash /root/temp/refresh.sh










