crontab条目的语法看起来正确。确实,如果您使用“ crontab -e
”(应按要求)编辑crontab,则无论如何如果指定语法上无效的crontab条目,都会出现错误。
首先,是否/path_to_my_php_script/info.php
可以从命令行正确运行?
如果是这样,它是否也可以像这样正确运行?:
/bin/sh -c "(export PATH=/usr/bin:/bin; /path_to_my_php_script/info.php </dev/null)"
如果可行,是否可以这样工作?
/bin/sh -c "(export PATH=/usr/bin:/bin; /path_to_my_php_script/info.php </dev/null >/dev/null 2>&1)"
步骤(3)与cron将如何运行程序类似(如“ man 5 cron”中所述)。
您遇到的最可能的问题是,cron用于运行程序的PATH过于严格。因此,您可能希望在crontab条目的顶部添加以下内容(您需要在脚本所需的任何目录中添加):
PATH=~/bin:/usr/bin/:/bin
另请注意,cron默认情况下将使用/bin/sh
,而不是bash。如果需要bash,请将其添加到crontab文件的开头:
SHELL=/bin/bash
请注意,这两个更改都会影响所有 crontab条目。如果只想为info.php
程序修改这些值,则可以执行以下操作:
*/2 * * * * /bin/bash -c ". ~/.bashrc; /path_to_my_php_script/info.php"
还值得一提的是,在配置为“邮件”的系统(换句话说,已配置MTA [sendmail / postfix / etc]的系统)上,crontab程序的所有输出都会自动通过电子邮件发送给您。默认的Ubuntu桌面系统不会配置本地邮件,但是如果您在服务器上工作,则只需在终端中键入“ mail”即可查看所有这些cron邮件。这也适用于“ at
”命令。