如果我在终端执行以下操作,它就会起作用:
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
存在,您的用户不得列在其中。