Cronjob 屏幕 PHP 未执行

Cronjob 屏幕 PHP 未执行

如果我在终端执行以下操作,它就会起作用:

screen -dmS tt-rss-daemon sudo -u www-data /usr/bin/php /usr/share/nginx/www/tt-rss/update.php --feeds --daemon

如果我在 Crontab 中写入以下内容(crontab -e)并重新启动机器,什么也没有发生。

@reboot screen -dmS tt-rss-daemon sudo -u www-data /usr/bin/php /usr/share/nginx/www/tt-rss/update.php --feeds --daemon

有人知道如何纠正这个问题吗?

答案1

cron 是否设置为在系统启动时运行?尝试将其设置为在特定时间运行,看看它是否运行。如果没有,那么很可能 cron 没有运行,您需要添加 cron 以在相关运行级别启动

在Redhat中:

chkconfig cron on

在Gentoo中:

rc-update add cron default

在 Debian/Ubuntu

update-rc.d cron defaults

除此之外,大多数发行版都有一个在启动时运行的脚本。在 Redhat 发行版中,它的

/etc/rc.d/rc.local

在 Gentoo 中

/etc/local.d/anyfilename.start

在 Debian 中我相信您必须创建自己的启动脚本。

答案2

检查您的sudoers文件并确保您没有requiretty启用(查找类似 的行Defaults requiretty)。 requiretty防止在 cron 和其他非交互式情况下使用 sudo。它不是 Debian 中的默认设置。cron如果是这种情况,我相当肯定应该通过电子邮件向您的用户发送错误消息(除非配置为不这样做,或者您将输出发送到/dev/null)。

另一种情况是,如果您的用户没有权限拥有个人crontab。在这种情况下,cron将完全忽略您的条目。如果/etc/cron.allow存在,您的用户必须列在其中。如果/etc/cron.deny存在,您的用户不得列在其中。

相关内容