我试图让crontab自动运行一个文件,内容如下:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
*/5 * * * * php /path/to/script
我已将名为prod.cron
的此文件放入/etc/cron.d
文件夹,但似乎无法让它在自己的文件夹上运行。通过命令行直接运行脚本表明它工作正常,但不确定cron.d中的文件是否被自动检测到或者我是否需要做其他事情来启动它们?
答案 0 :(得分:0)
请注意,目录/etc/cron.d
旨在供软件包使用,crontabs应安装到用户crontab中。话虽如此,请查看以下Cron Issues:
- 该脚本没有执行权限。使用chmod a + x来提供权限。
- 对于php,perl或其他脚本语言,解释器或程序的路径不正确。始终提供实际路径 解释器在定义在cron中运行的命令时。要找出答案 程序所在的位置,使用whereis命令。对于例如 对于PHP,whereis php。 for perl,whereis php等。
- 运行脚本所需的环境变量不可用。 cron不使用用户的相同环境。它 在运行命令时使用自己的环境。所以变量 在.login或.profile中定义的内容对他来说是不可见的。最普遍的 问题与PATH变量有关,该变量不相似。
醇>
答案 1 :(得分:0)
有两种版本的cron文件。
/etc/cron.d
下安装的文件是 system cron文件。它们要求每行上的第6个字段是用于运行命令的用户帐户。有关示例,请参阅/etc/cron.d
下的其他文件。
非系统cron文件只有通常的5个字段来指定作业运行的时间,然后是要运行的命令。它们由crontab
命令安装,由将运行命令的用户帐户执行。这可能是你想要使用的东西。
将root
添加为相关行的第6个字段,或以root身份运行crontab prod.cron
(或运行命令的任何帐户)。
当然要确保php
命令在指定的$PATH
。