Cron工作不起作用

时间:2013-07-12 19:12:18

标签: unix web cron

我已在我网站的某个页面上放置了一个Cron作业。我使用的命令是:

30 */1 * * */twitter/index.php

我希望此页面每小时从上午12:30(凌晨1:30,凌晨2:30等)开始刷新。我已经设置了我的电子邮件,以便我可以收到错误,而且我得到的错误是

/bin/sh: 30: command not found

我的主机是“JustHost”(它确实支持cPanel中的Cron Jobs)

页面开启:
www.DOMAINNAME.com/twitter/index.php

感谢。

3 个答案:

答案 0 :(得分:1)

/twitter/index.php搜索系统根目录中名为twitter的目录。它不太可能存在。它可能是您域的根,但它不是您网站的文件系统目录的根。

相反,它应该是这样的: /home/youraccountnumber/yourdomainname/twitter/index.php

至少在我的CPanel中也支持cron作业。当我创建一个新的cron时,部分/home/myaccountnumber已经填入。:)

CPanel也告诉我:

Sample cron commands:
/usr/local/bin/php /home/*myaccount*/domains/domain.com/public_html/script.php
/usr/local/bin/curl --silent http://www.domain.com/cron.php > /dev/null
/usr/local/bin/wget -O /dev/null http://www.domain.com/cron.php

因此,如果您没有此信息,请与您的主机联系,以了解要使用的确切路径。他们可能有关于这个主题的文件。

答案 1 :(得分:1)

如果这个命令:

30 */1 * * */twitter/index.php

给你这个错误:

/bin/sh: 30: command not found

然后你试图将它作为shell命令执行。

要设置cron命令,您必须将其提供给crontab命令。执行此操作的最佳方法是IMHO,即使用格式正确的crontab条目创建文件(可能为$HOME/.crontab),然后执行:

% crontab $HOME/.crontab

换句话说,不要执行crontab文件,将其提供给crontab命令。

另请注意,字段之间必须有空格。前5个字段指定命令运行的时间;剩下的就是命令本身。您在第5个字段和其余字段之间没有空格。此外,*/1更简单地写为*。所以这个:

30 * * * * /twitter/index.php
如果您希望在每小时后30分钟运行/twitter/index.php,那么

将是放入crontab的正确行。

这假定index.php是一个可执行文件,位于文件系统根目录下的twitter目录中,这可能有点奇怪。如果它在其他地方,则应指定要执行的命令的完整路径。 Cron的工作环境有限;特别是,它们在交互式shell中可能没有相同的$PATH

答案 2 :(得分:0)

您应该执行的命令是从root到包含您要运行的特定php文件的文件夹的完整路径。大多数CPanels都会在其他地方设置时序设置,并为您创建cron表达式。只需将路径放在命令字段中即可。