Bash 如何自动运行cron?

Bash 如何自动运行cron?,bash,cron,centos,Bash,Cron,Centos,我试图让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中的文件是否自动检测到,或者我是否需要执行其他操作来初始化它们?注意,目录/etc

我试图让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中的文件是否自动检测到,或者我是否需要执行其他操作来初始化它们?

注意,目录/etc/cron.d是由软件包使用的,crontab应该安装到用户crontab中。尽管如此,请查看以下内容:

该脚本没有执行权限。使用chmod a+x提供权限。 对于php、perl或其他脚本语言,解释器或程序的路径不正确。始终提供到的实际路径 定义要在cron中运行的命令时的解释程序。查明 在程序所在的位置,使用whereis命令。例如。 对于php,这里是php。对于perl,php在哪里,等等。 运行脚本所需的环境变量不可用。cron不使用与用户相同的环境。信息技术 在运行命令时使用自己的环境。那么变量呢 他看不到在.login或.profile中定义的。最常见的 问题与路径变量有关,路径变量不相似。
cron文件有两种风格

安装在/etc/cron.d下的文件是系统cron文件。它们要求每行的第6个字段是用于运行命令的用户帐户。有关示例,请参见/etc/cron.d下的其他文件

非系统cron文件只有通常的5个字段来指定作业何时运行,然后是要运行的命令。它们由crontab命令安装,由运行这些命令的用户帐户执行。这可能就是你想要使用的

将root添加为相关行的第6个字段,或以root或任何应运行该命令的帐户的身份运行crontab prod.cron


当然,还要确保php命令位于指定的$PATH中。

您的系统中有用户php吗?crontab的第六个字段是登录名。您应该通过crontab-e提交cronjobs,作为运行cronjob的用户id,而不是通过将文件放入/etc或/var。检查man crontab是的,我以前使用过crontab,但我正在尝试不同的方法。有cron.*文件夹可以自动为您运行脚本,而无需编辑crontab,这正是我在这里想要弄明白的。不要认为您需要一个用户,我看到很多示例只是在做类似于*/1****/usr/local/bin/php/path/to/script的事情,您的chmod+x/etc/cron.d/prod.cron吗?