Linux系统定时任务
定时任务Crond
Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统之后,默认便会启动Crond任务调度服务。
Crond服务会定期(默认每分钟检查一次)检查系统中是否有要执行的任务工作,如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作,这个crond定时任务服务就相当于我们平时早起使用的闹钟一样。
程序文件:程序代码组成,但是没有在计算机内执行。当前没有执行
进程:所谓的进程就是计算机中正在执行的程序
守护程序或守护进程:守护进程就是一种运行的程序
crontab -l用来查看定时任务信息
下面是定时任务的使用指定格式:
# Example of job definition:
# .---------------- minute (0 - 59) //分钟
# | .------------- hour (0 - 23) //代表小时
# | | .---------- day of month (1 - 31) //代表日、天
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ... //代表月份
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat //代表星期,星期几
# | | | | |
# * * * * * user-name command to be executed
简单点儿记就是分时日月周,*代表每的意思
例:
①30 3,12 * * * /bin/sh /scripts/oldboy.sh
每天凌晨3点半和中午12点半的时刻执行/scripts/oldboy.sh脚本
②30 */6 * * * /bin/sh /scripts/oldboy.sh
每6小时30分执行一次/scripts/oldboy.sh脚本
③30 8-18/2 * * * /bin/sh /scripts/oldboy.sh
在每天的8点到18点之间,每隔2小时的 半点时刻执行/scripts/oldboy.sh
④30 21 * * * /application/apache/bin/apachectl graceful
每天晚上9点半重启apache
⑤ 45 4 1,10,22 * * /application/apache/bin/apachectl graceful
每月1日10日22日的4点45分重启apache
⑥ 10 1 * * 6,0 /application/apache/bin/apachectl graceful
每周六和周日的凌晨1点10分重启apache
⑦ 0,30 18-23 * * * /application/apache/bin/apachectl graceful
每天的18点到23点每隔30分钟重启一次apache。
提示:最后一次执行任务时23:30分
⑧ 0 */1 * * * /application/apache/bin/apachectl graceful
每小时重启一次apache
####⑨ * 23,00-07/1 * * * /application/apache/bin/apachectl graceful
每天的23点与0-7点之间每分钟重启一次apache
⑩ 00 11 * 4 1-3 /application/apache/bin/apachectl graceful
每年的4月份每周的周1到周3每天的11点整重启一次apache
//一般周和日尽量不要同时用,否则可能达不到想要的效果
例:8月9号上午10:00开学:
00 10 09 08 *
每周日,下午7:30上晚自习:
30 07 * * 0
工作中调试定时任务的方法:
增加执行任务频率调试任务
每分钟或者系统时间之后5分钟执行,看结果对不对
某些任务不能用于生产环境没有测试机会
代码、配置变更发布流程:
个人开发环境--办公室测试环境--IDC机房测试环境--IDC正式环境(分组,灰度发布)
调整系统时间调试任务(不能直接用于生产环境),保持5分钟
通过脚本日志输出调试定时任务
注意一些任务命令带来的问题
例如:
标准输出多了
*/1 * * * * echo “==” >> /emp/oldboy.log >/dev/null 2>&1)
百分号转义(脚本无需转义)
*/1 * * * * tar zvf /tmp/oldboy_$(date +%F).tar.gz /etc/hosts
注意:环境变量导致的定时任务故障(java)
通过crond定时任务服务日志调试定时任务(/var/log/oron)
其他问题调试的办法
8.sh -x 调试脚本