crontab自动执行时间设置带来的郁闷

  crontab是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是相似使用者的时程表。在web开发时也常常用到crontab去定时执行某些程序进行某些操做。昨天写了个PHP程序天天0时生成一份统计数据。和日常同样,先把程序写完了,执行了一下正常,又去服务器上敲crontab -e编辑。写下:
  0 0 * * * /***/php /***/xxx.php
 
  原觉得能够高枕无忧地睡大觉去了,谁知道0点的时候去服务器上看,发现并无生成统计数据。赶忙看crontab,看过N遍也没有问题。接着看程序,原来程序并未指定程序目录。PHP在作crontab的时候,须要先用chdir()函数指定程序的目录,至于为何,我也说不清楚。总之没有就会出现找不到指定目录的状况。修改完程序又改crontab,当时服务器上的时间是0:10分,我就把crontab的时间设置改为:
  11 0 * * * /***/php /***/xxx.php
 
  原觉得此次能够正常生成了,结果一会发现仍然没有。赶忙再去看程序,路径都对。又写了个特别简单的小程序去测试。结果发现仍然没有出现想要的结果。又去查看服务器上的目录权限,也没有问题。
 
  今天早上,又郁闷了许久,这种状况直到我看错时间的那一刻才结束。我把crontab的时间多设置了几分钟。本没报太大但愿,结果惊喜地发现竟然成功了,又测试了几回,也没问题。最后总结出了一个经验,crontab的时间设置须要至少和如今的时间相差2秒以上,若是设置当前时间的下一秒,crontab是不会执行程序的,只有等到下次时间知足条件才会执行程序。
相关文章
相关标签/搜索