怎么快速创建 cron job 任务
-
基本知识的铺垫:
星号():代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如/10,如果用在minute字段,表示每十分钟执行一次。 -
crontab -e 编辑计划任务,然后就像编辑普通文件一样,编辑计划任务即可
[root@hc-25-68-14 tmp]# crontab -e */2 * * * * /bin/echo "hello" >> /tmp/hello # 每2分钟向文件 /tmp/hello的行尾写入 hello 字符串, # 当然也可以*/2 * * * * /bin/sed -i '$a hello' /tmp/hello , 这要求 /tmp/hello 文件中是有内容的 # 为了确保计划任务能正确执行,最好在 shell 里面手动执行下计划任务中的命令同时命令的路径最好用绝对路径 wq保存退出可以看到 [root@hc-25-68-14 ~]# crontab -e crontab: installing new crontab [root@hc-25-68-14 ~]#
扩展:每2个小时执行一次脚本:
0 */2 * * * /bin/echo “hello” >> /tmp/hello
开头的分钟的星需要设置为一个具体的分钟值,表示每2个小时的某个分钟执行,如果是星,那么默认是每分钟执行一次。
crontab设置为每2个小时之后,是从当前时间算起,还是怎么样的?
crontab修改生效的时间是10:48。那么是 12:48 第一次执行,还是12:00就会执行?
发现: 在12:00,14:00,16:00时间是2的倍数的都会执行。
解释:从crontab生效开始,系统时间小时数每遇到2的倍数,如:12:00,14:00等就会执行。这并不是真正的每隔 2 小时运行一次。严格的每隔 2 小时的写法是:
*/120 * * * * /bin/echo “hello” >> /tmp/hello #每120分钟执行一次
在 Redhat 上尝试,这种写法是不对的。
对于分钟列这样 */x 的写法,其他列都是 * ,真实表达的意思是:
如果 x < 60, 比如 25, 则在 25min 50min 和整点的时候执行
如果 x >= 60 比如 71, 则只会在整点执行 -
crontab -l 查看定时任务
[root@hc-25-68-14 tmp]# crontab -l */2 * * * * echo "hello" >> /tmp/hello [root@hc-25-68-14 tmp]#
-
其实上面的编辑的定时任务,就保存在了 /var/spool/cron/root 中, 该文件不要直接编辑
[root@hc-25-68-14 tmp]# cat /var/spool/cron/root */2 * * * * echo "hello" >> /tmp/hello [root@hc-25-68-14 tmp]# --------------------------------------------------------------------------------------------------------------------------------- 日志文件: ls -al /var/log/cron* 进程:ps -ef | grep crond ==> /etc/init.d/crond restart [root@JXQ-240-90-228 logrotate]# pwd /var/lib/logrotate [root@JXQ-240-90-228 logrotate]# cat logrotate.status logrotate state -- version 2 "/var/log/yum.log" 2019-4-4-10:0:0 "/export/servers/var/log/w1-4.log" 2019-9-8-12:0:1 "/var/log/boot.log" 2019-9-8-3:38:1 "/export/servers/var/log/w1.log" 2019-8-20-3:0:0 "/var/log/chrony/*.log" 2019-4-4-10:0:0 "/var/log/wtmp" 2019-9-1-3:45:1 "/export/servers/var/log/w1-1.log" 2019-9-8-12:0:1 "/var/log/spooler" 2019-4-4-10:0:0 "/export/servers/var/log/archiver.log" 2019-9-8-16:0:1 "/var/log/btmp" 2019-9-1-3:45:1 "/var/log/maillog" 2019-9-1-3:45:1 "/var/log/aide/*.log" 2019-4-4-10:0:0 "/var/log/iptraf-ng/*.log" 2019-4-4-10:0:0 "/export/servers/var/log/w1-2.log" 2019-9-8-12:0:1 "/var/log/wpa_supplicant.log" 2019-4-4-10:0:0 "/var/log/secure" 2019-9-1-3:45:1 "/export/servers/var/log/uwsgi_archvier.log" 2019-8-20-3:0:0 "/var/log/messages" 2019-9-1-3:45:1 "/var/account/pacct" 2019-4-4-10:0:0 "/var/log/cron" 2019-9-1-3:45:1 "/export/servers/var/log/w1-3.log" 2019-9-8-12:0:1 [root@JXQ-240-90-228 logrotate]#