-
Notifications
You must be signed in to change notification settings - Fork 0
Description
划重点
crontab是一个守护进程,服务叫做crond
时间表达式要熟悉
环境变量设置
输出重定向
好的方式是编辑 /etc/cron.d, 而不是crontab -e 没有sudo权限就还是用 crontab -e 吧
centos7 crontab日志文件为 tail /var/log/cron
使用
时间模板
5个参数分别为 分、时、日、月、周
* * * * * 每分钟执行
5 * * * * 每个小时的第五分钟执行
0 */2 * * * 每隔2个小时执行一次
* 12 * * Mon 周一12时每分钟执行一次
59 23 1 5 * 每年的5 月 1 日的 23:59
*/5 * * * * 每5分钟执行一次
30 16 * * 5 每个星期5下午4点办
30 21 * * * 每天晚上9点半执行
45 4 1,10,22 * * 每个月的1,10,22号的4点45执行
10 1 * * 6,0 每周六日的1点10分执行
0,30 18-23 * * * 每天的18到23点,每个小时的0分,30分执行一次
0 7 * * * 每天早上7点执行一次
0 6-12/3 * 12 * 12 月内, 每天的早上 6 点到 12 点中,每隔3个小时执行一次
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /var/www/devdaily.com/bin/do-update.sh
环境变量
source /etc/profile 通过souce来脚本中引入变量
export RUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf 特定的变量用export来指定
还是不行的话可以直接在crontab中增加环境变量的导入
0 * * * * . /etc/profile;/bin/sh /var/www/java/audit_no_count/bin/restart_audit.sh
注意事项
1)新创建的cron job,不会马上执行,至少要过2分钟才执行。如果重启cron则马上执行。
2)每条 JOB 执行完毕之后,系统会自动将输出发送邮件给当前系统用户。日积月累,非常的多,甚至会撑爆整个系统。所以每条 JOB 命令后面进行重定向处理是非常必要的: >/dev/null 2>&1 。前提是对 Job 中的命令需要正常输出已经作了一定的处理, 比如追加到某个特定日志文件。
3)当crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题。或者查看日志看某个job有没有执行/报错tail -f /var/log/cron。
4)千万别乱运行crontab -r。它从Crontab目录(/var/spool/cron)中删除用户的Crontab文件。删除了该用户的所有crontab都没了。
5)在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+%Y%m%d’`。
crontab 如果把一个python 文件的print 重定向到文件中,不能单纯的 >a.txt
而是 python xx.py > a.txt 2>&1 才行
cron 也可把文件放 /etc/cron.d 文件夹下,但是写法上要注意
参考:http://www.server-memo.net/tips/etc-crontab.html
大概的格式如下,不同的就是这里不是最前面不仅有5个参数来表示时间,还有一个参数来表示用户,执行命令如果不是path中,使用绝对路径
[root@erya cron.d]# cat cacti
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
*/5 * * * * root /usr/bin/php /home/www/cacti/poller.php > /dev/null 2>&1
[root@localhost apmonitor]# cd -
/etc/cron.d
[root@localhost cron.d]# cat apmonitor
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
MONITORHOME=/home/project/apmonitor
最好采用这种方式,不会对其他的cron产生影响
可以自定义变量
0,5,10,15,20,25,30,35,40,45,50,55 * * * * root cd $MONITORHOME && /usr/bin/python manage.py snmptasks livescan
0 3 * * * root cd $MONITORHOME && /usr/bin/python manage.py snmptasks macscan
20 3 * * * root cd $MONITORHOME && /usr/bin/python manage.py snmptasks dailysts
30 4 * * * root cd $MONITORHOME && /usr/bin/python manage.py snmptasks dailycleardb