Cron的工作每天9:27

时间:2013-09-03 07:30:57

标签: crontab

我在使用crontab时遇到了一些问题。 我有这份工作:

  

27 09 * * * drush @ ildeposito.prod status

我想每天9点27分执行cron工作。 但它不起作用。 如果我尝试在提示符中直接执行命令,则可以正常工作。

我的crontab出了什么问题?

如果我从shell执行“date”,我获得:

  

3月3日设置2013年,12.55.13,CEST

如果我将date的输出放在一个带有cron作业的文件中,我会得到:

  

Tue Sep 3 12:55:01 CEST 2013

另一个:这不会在13分钟每分钟执行一次!

* 13 * * * date >>/tmp/temp_out_hour

这有效:

  

* / 15 * * * * drush @ site.prod cache-warmer --timeout = 6 --hub-pages-file = / home / sergej / websites / sute / site-cache.txt   http://www.site.org

系统似乎有几个小时的问题。

1 个答案:

答案 0 :(得分:3)

首先,您需要指定“它不起作用”的实际含义。你的意思是你没有看到输出?没有邮件发送给你输出?通常,cron作业的标准输出将打包在一封电子邮件中,并发送给运行该作业的用户。如果要查看作业输出的内容,可以使用以下内容:

27 9 * * * drush @ildeposito.prod status >/tmp/temp_out 2>&1

会将标准输出写入该文件的错误(您也 } 0中的前导09

如果命令在shell提示符下工作而不是从cron起作用,则通常在您的环境设置中有所不同。你可以用一个非常简单的工作替换你的工作来测试这个:

27 9 * * * date >>/tmp/temp_out

并在执行后检查该文件。如果date有效但drush没有,则问题出在cron之外。

cron使用一组最小的环境变量启动进程,您必须确保已配置合适的集合。例如,请参阅here

  

我们使用/ usr / bin / env来运行drush,以便我们可以设置一些需要执行的必要环境变量。默认情况下,cron将使用空PATH运行每个命令,这对于drush来说效果不佳。

     

当在终端中运行drush时,将通过tush命令自动检测列数,tput命令查询活动终端以确定屏幕的宽度。当从cron运行drush时,将不会有任何终端设置,并且对tput的调用将产生错误消息。由于cron通常被配置为在产生任何输出时发送电子邮件,所以不推荐使用Spurrious错误消息,因此必须努力确保cron的成功运行完成且没有输出。

     

在某些情况下,例如,drush足够聪明,可以识别出没有终端 - 如果终端值为空或“哑”。但是,有一些“非终端”值,匆忙无法识别,例如“未知”。如果您手动设置COLUMNS,则drush将检查您的设置,并且不会尝试调用tput。

除此之外,还有许多其他可能困扰cron的问题:

  • 在文件的最后一行上有一个命令,最后没有换行符有时会引起麻烦。
  • 在你的命令中有%
  • cron守护进程以不同的时区设置开始。

有时可以通过重新启动守护进程来修复最后一个。鉴于您对不履行的奇异性质的评论,我建议作为第一步。