我正在尝试专门为运行 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 的正确位置吗?我用谷歌搜索,它提到它可能会在 SUSE 下的其他地方,但除非我弄错了,否则所有迹象都是在 Debian /etc 下是正确的位置。
3) /etc/cron.allow 的权限?我(暂时)将它们设置为 777,这是否过于宽松?
4) 创建/修改 cron.allow(或 cron.deny)后是否需要重新启动 cron?
PS ....自从第一次在stackoverflow上发布这个(我现在将删除它)我尝试重新启动cron无济于事:任务仍然没有运行
正如 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 对其内部文件的更新。
您可以尝试“15,30,45 * * * * /usr/bin/php /var/www/cron/test.cli.php”