linux crontab 注意事项

转载:http://lyhm4.blog.163.com/blog/static/987767002010102734426756/

 

因为项目中遇到每隔5小时运行一次的程序,但我发现每天的5点,10点,15点和20点执行,接着第二天也是同样的时间--5点,10点,15点和20点执行,而不是我想象的隔5小时,google了一下才知道,原来crotab是按照安排任务的间隔周期精度的第一个时间点,也就是我安排每5小时,任务就会按照每天的0点开始算的每5小时。下面是上网找到的文章:

 

 

Linux 中有两个命令用于安排计划任务,at 和 crontab 。它们大大的简化了我们的维护工作量,比如定期以及指定时间运行脚本等。本文主要就crontab使用过程中的一些值得注意的事项进行说明。
       crontab只能用于安排周期计划任务,无论你怎么设置,总会存在将来的某个时刻会再次执行,所以对于只能进行一次的维护任务等,请选择at命令,主要是担心大家在crontab执行完后会忘记删除任务,导致将来出现一些意想不到的错误。
       crontab的最小时间精度是分,对于日常的维护已经足够了。如果需有精确到秒这样的需求,可以在运行command前先sleep一定秒数,比如,* * * * * sleep 10; command1,这样command1就会每分钟的第10秒执行。
       crontab周期执行任务的注意事项。我们经常会在日常运维中遇到每隔N分钟,每隔N小时、每隔N天执行一次维护任务。如果每隔三小时执行一次,则前面 的分钟数不能以星号(*)代替,比如,* */3 * * * scommand2,那么将会每隔3小时,执行60次,需采用下面的格式:0 */3 * * * scommand2,其他同理。
       关于crontab周期执行任务还有个注意事项,它安排任务开始于你间隔周期精度的第一个时间点,比如每隔7小时执行一次,则0点任务第一次执行,以后每 隔7小时执行一次,到第二天0点再次重复这个过程。同理,每隔N天执行一次则会在每个月的1号执行一次,然后每隔N天执行一次,所以就不要奇怪为什么每个 月的1号该任务都会执行,哪怕是上个月最后一天才执行了也不例外。因此我们就不能在逻辑上通过减去N,得到N天的任务结果。我们在工作中也遇到过这样的问 题,某个产品计划每三天对其数据库进行一次历史归档,为了判断服务器当前空间是否够备份,会判断上次历史备份的大小,当初的设计是我们给每个历史归档以时 间进行标识,如,2010-11-26,然后我们备份的时候就会去检查三天前的历史备份大小,比如2010-11-23的备份。但是由于前面讲到的原因, 每个月的1号回出现总是找不到上次的历史备份。
       目前我就总结了以上4点稍微需要我们留意,如果大家觉得还有哪些地方值得注意或者文中有误的地方,欢迎提出指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值