Advertisement

Cron定时任务

阅读量:

Cron表达式

完整的是七位
秒 分钟 小时 日 月 星期 年(有的没有这个年)

例子

“0 0 12 * * ?” 每天中午12点触发
“0 15 10 ? * *” 每天上午10:15触发
“0 15 10 * * ?” 每天上午10:15触发
“0 15 10 * * ? *” 每天上午10:15触发
“0 15 10 * * ? 2005” 2005年的每天上午10:15触发
“0 * 14 * * ?” 在每天下午2点到下午2:59期间的每1分钟触发
“0 0/5 14 * * ?” 在每天下午2点到下午2:55期间的每5分钟触发
“0 0/5 14,18 * * ?” 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
“0 0-5 14 * * ?” 在每天下午2点到下午2:05期间的每1分钟触发
“0 10,44 14 ? 3 WED” 每年三月的星期三的下午2:10和2:44触发
“0 15 10 ? * MON-FRI” 周一至周五的上午10:15触发
“0 15 10 15 * ?” 每月15日上午10:15触发
“0 15 10 L * ?” 每月最后一日的上午10:15触发
“0 15 10 ? * 6L” 每月的最后一个星期五上午10:15触发
“0 15 10 ? * 6L 2002-2005” 2002年至2005年的每月的最后一个星期五上午10:15触发
“0 15 10 ? * 6#3” 每月的第三个星期五上午10:15触发

星期会和日冲突,将其中一个置为?

linux crontab

和标准的不同,只有五位
分钟,小时,日(day of month),月(month of year),周几(day of week).

/etc/crontab文件
root用户使用,系统的周期任务

crontab -e命令
所有用户都可以使用,自动写入/var/spool/cron/usename

对应的重启定时任务命令
1 /etc/init.d/crond restart
2 service crond restart


下面是以前写的

  1. 开启crontab日志。

crontab默认不开启日志,所以先开启定时任务的日志来查看(CentOS实际表明是默认开启的)

修改rsyslog服务,将 /etc/rsyslog.conf 文件中的 #cron.* 前的 # 删掉;用service rsyslog restart重启rsyslog服务:

要检查crontab 任务执行情况,可以查看log 文件 /var/log/cron。

  1. 写定时任务

crontab -e

开启本用户的定时任务,即创建以本用户名为文件名的定时任务文件,位置在/var/spool/cron/用户名。(我的用户名是root)(整个这个是文件,文件名就是用户名)

定时任务语句格式为:执行周期+命令,周期有5个域,分别是

分钟,小时,日(day of month),月(month of year),周几(day of week).

每个域不加限制任意的话用*,整体格式为:

          • command

写完后重启cron 服务

service crond restart

顺便附上常用的周期格式

每五分钟执行 */5 * * * *

每小时执行 0 * * * *

每天执行 0 0 * * *

每周执行 0 0 *

每月执行 0 0 1 * *

每年执行 0 0 1 1 *

定时任务执行后提示信息在/var/spool/mail/root中
可以cat /var/spool/mail/root找错误信息(这个太重要了,之前一直不知道)

使用绝对路径,.sh文件开头加上(好像不加也没关系)
#!/bin/sh
source /etc/profile

crontab定时任务走过的坑坑

  1. 个人实际写入的情况
    test.sh内容
    #!/bin/sh
    source /etc/profile
    ps aux | grep ‘python’| awk ‘NR==1{print $2}’ | xargs kill -9 //awk取第一行第二列的pid
    screen -wipe //强制杀死进程后,screen好像没法连上
    screen -dmS dy /opt/anaconda3/bin/python /root/douyu/bin/run.py //没有-dmr

crontab -e输入下面内容
0 * * * * /root/test.sh

screen -dmS docker-d 新建一个名叫docker-d的session,但暂不进入,可用于系统启动脚本里


当年居然想着进screen查看输出的日志。现在直接上docker了[哈哈]

全部评论 (0)

还没有任何评论哟~