1

我正在尝试让 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 中的文件是否被自动检测到或者我需要做其他事情来初始化它们?

4

2 回答 2

0

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

  1. 该脚本没有执行权限。使用 chmod a+x 提供权限。
  2. 在 php、perl 或其他脚本语言的情况下,解释器或程序的路径不正确。在定义要在 cron 中运行的命令时,始终提供解释器的实际路径。要找出程序所在的位置,请使用 whereis 命令。例如对于 php,whereis php。对于 perl,whereis php 等。
  3. 运行脚本所需的环境变量不可用。cron 不使用与用户相同的环境。它在运行命令时使用自己的环境。所以 .login 或 .profile 中定义的变量对他来说是不可见的。最常见的问题与不相似的 PATH 变量有关。
于 2012-12-12T19:41:56.287 回答
0

cron 文件有两种风格。

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

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

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

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

于 2012-12-12T19:58:54.023 回答