使用 crontab 做定时服务
jopen
9年前
使用crontab做定时服务
基本命令
- crontab -e 编辑任务
- crontab -l 列出任务
时间格式
- f1 f2 f3 f4 f5 program
- f1:分钟
- f2:小时
- f3:一个月中的第几天
- f4:月份
- f5:一个星期中的第几天
- f1为 a-b 表示从a分钟到b分钟内执行
- f2为 a-b 表示从a小时到b小时内执行
- f1为 */n 表示n分钟个时间间隔执行一次
- f2为 */n 表示每n小时个时间间隔执行一次
- f1为 a, b, c,… 时表示第 a, b, c… 分钟要执行
- f2为 a, b, c,… 时表示第 a, b, c… 个小时要执行
Samples
- * * * * * command
每分钟执行一次 - 3,15 * * * * command
每小时的第 3 15 分钟执行一次 - 3,15 8-11 * * * command
上午8点到11点的第3 15分钟执行一次 - 3,15 8-11 */2 * * command
每隔两天的上午8点到11点的第3 15分钟执行一次 - 3,15 8-11 * * 1 command
每个星期一的上午8点到11点的第3和第15分钟执行 - 30 21 * * * command
每晚的21:30执行 - 45 4 1,10,22 * * command
每月1、10、22日的4 : 45执行 - 10 1 * * 6,0 command
每周六、周日的1 : 10执行 - 0,30 18-23 * * * command
每天18 : 00至23 : 00之间每隔30分钟执行 - 0 23 * * 6 command
每星期六的晚上11 : 00 执行 - * */1 * * *
每小时执行一次 - * 23-7/1 * * *
晚上11点到早上7点之间,每隔一小时执行 - 0 11 4 * mon-wed
每月的4号与每周一到周三的11点执行 - 0 4 1 jan *
一月一号的4点 - 01 * * * * root run-parts /etc/cron.hourly
每小时执行/etc/cron.hourly目录内的脚本
** run-parts这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是目录名了 **
注意事项
-
手动可执行任务,但无法自动执行,需要注意环境变量
- 脚本中涉及文件路径时写全局路径
- 脚本执行要用到java或其他环境变量时,通过source命令引入环境变量
cat start_cbp.sh #!/bin/sh source /etc/profile export RUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf /usr/local/jboss-4.0.5/bin/run.sh -c mev &
- 清理系统用户的邮件日志
- 新创建的cron job,不会马上执行,至少要过2分钟才执行。如果重启cron则马上执行。
- 当crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题。或者查看日志看某个job有没有执行/报错tail -f /var/log/cron。