如何自动运行crons?

时间:2012-12-12 17:59:33

标签: 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中的文件是否被自动检测到或者我是否需要做其他事情来启动它们?

2 个答案:

答案 0 :(得分:0)

请注意,目录/etc/cron.d旨在供软件包使用,crontabs应安装到用户crontab中。话虽如此,请查看以下Cron Issues

  
      
  1. 该脚本没有执行权限。使用chmod a + x来提供权限。
  2.   
  3. 对于php,perl或其他脚本语言,解释器或程序的路径不正确。始终提供实际路径   解释器在定义在cron中运行的命令时。要找出答案   程序所在的位置,使用whereis命令。对于例如   对于PHP,whereis php。 for perl,whereis php等。
  4.   
  5. 运行脚本所需的环境变量不可用。 cron不使用用户的相同环境。它   在运行命令时使用自己的环境。所以变量   在.login或.profile中定义的内容对他来说是不可见的。最普遍的   问题与PATH变量有关,该变量不相似。
  6.   

答案 1 :(得分:0)

有两种版本的cron文件。

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

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

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

当然要确保php命令在指定的$PATH