我正在尝试为运行 Web 进程的用户专门设置一个 crontab。我有 root/sudo 访问权限,因此我使用 -e 选项为 www-data 用户编写了一个条目,下面是使用 -l 选项的列表:
/etc$ sudo crontab -u www-data -l
# m h dom mon dow command
15,30,45 * * * * /var/www/cron/test.cli.php
但是,该进程并未按指定的时间间隔运行。我很确定我的语法是正确的,因此这让我想到了其他几种可能性
1) /etc/cron.allow 格式不正确?我实际上是以 sudo/root 身份创建的,我所做的就是输入一行“www-data”。但是,这是正确的格式吗?我很难找到有关 /etc/cron.allow 应该如何格式化的信息,它的不是据我所知(http://linux.die.net/man/1/crontab)
2) /etc 是 Debian 上 cron.allow 的正确位置吗?我在 Google 上搜索了一下,它提到它可能位于 SUSE 下的其他地方,但除非我弄错了,所有迹象都表明 Debian 下的 /etc 是正确的位置。
3) /etc/cron.allow 的权限?我(暂时)将其设置为 777,这可能是也宽容?
4)创建/修改cron.allow(或cron.deny)后,是否需要重新启动cron?
PS....自从第一次在 stackoverflow 上发布此问题(我现在将删除它)以来,我尝试重新启动 cron,但无济于事:任务仍然没有运行
答案1
正如 Cornfed 所说,你的 .php 脚本必须以 #!/usr/bin/php 开头才能正常工作。
1) cron.allow/deny 文件仅影响用户运行“crontab”命令的能力,而不影响用户拥有 crontab 的能力。请参阅 man crontab。
2)是的,也在man crontab中列出。
3) 是的,任何用户都可以将自己添加到该列表中。这太宽容了。但在大多数情况下,你不需要这个文件在 Debian 上。来自 man crontab:“对于标准 Debian 系统,所有用户都可以使用此命令。”
4) 没有,但我注意到接受新命令时有延迟。请参阅 /var/log/daemon(我认为)以了解 CRON 对其内部文件的更新。
答案2
您可以尝试“15,30,45 * * * * /usr/bin/php /var/www/cron/test.cli.php”