0

我正在处理一些必须从 crontab 执行的脚本。其中一些重写了 crontab。

in.php 定义 read.php 是否应该由 crontab 运行。然后 read.php 由 crontab 执行。这工作正常。

执行 read.php 时,它可能会检测到它不应该运行,如果发生这种情况,它会重写 crontab 以避免自己执行,直到 in.php 再次重写 crontab。问题是这第二步不起作用。

我一直在寻找错误,发现我的 cron.txt 编写正确。但是,crontab 命令失败并返回 127 错误。但是当我手动执行 read.php 时一切正常。

两个脚本都使用相同的函数来重写 crontab。但这仅发生在 read.php 中,而不是 in.php 中。

是否有时间重写 crontab,因为它执行任务?它可以解释我的问题,因为 in.php 比 read.php 需要更长的时间来执行。

谢谢!

PD:我已经检查了 crontab 命令中的 cron.txt 的路径,如果它是自动执行的,还是我手动执行的。

编辑:当我谈到重写 crontab 时,我指的是重写 cron.txt 文件并执行crontab [path]/cron.txt

4

1 回答 1

1

如果无法访问您的代码,我们只能推测出了什么问题,但更简单和更强大的解决方案是添加一个决定是否执行实际作业的包装器,并始终从 crontab 运行包装器。在最简单的情况下,仅当文件存在时才执行它:

55 * * * * test -x hourly && ./hourly

重命名$HOME/hourly为其他名称以防止其执行。

或者,如果条件简单,只要不满足条件就让脚本提前退出。

case $moon_phase in full | new ) exit 0 ;; esac
于 2013-08-24T16:53:28.097 回答