从命令行运行但不能通过 cron 运行时脚本运行良好

Posted

技术标签:

【中文标题】从命令行运行但不能通过 cron 运行时脚本运行良好【英文标题】:script runs fine when run from command line but not via cron 【发布时间】:2010-01-12 03:41:33 【问题描述】:

我有一个 php 脚本,当通过 SSH 连接到我的服务器并运行它时运行良好。

然而,即使 cron 作业设置为每 10 分钟运行一次,php 脚本似乎也没有运行。

如何查看 cron 作业产生的错误?

【问题讨论】:

【参考方案1】:

请记住,cron 在不同于您可能习惯的工作目录中运行您的脚本。在命令行上尝试以下操作:

cd /
./path/to/your/script.php

如果失败,请正确修改脚本中的所有路径,直到它运行为止。然后它将在 cron 中运行。

【讨论】:

【参考方案2】:

有时,错误消息会通过 cron 通过电子邮件发送给您。否则,它可能会被发送给一个倒霉的系统管理员,他可能会谨慎地将消息保存在 /dev/null 中。

当事情从命令行运行而不能从 cron 运行时,“环境”几乎总是有问题。在正常命令行环境中设置的东西在 cron 环境中没有设置。请记住,cron 不会为您运行您的配置文件 - 您只有一组极少的环境变量,而 PATH 之类的东西则具有极小的最小值。

一般来说,我假设我应该从 cron 运行一个 shell 脚本,并且该 shell 脚本负责确保在运行软件的主要部分之前设置正确的环境 - 并且正确地捕获和记录错误。

【讨论】:

【参考方案3】:

不确定,但可能与凭据有关。安排您的任务以使用您的用户 ID 运行,看看是否不能清除它。如果是这样,您需要创建一组“批处理”凭据,您可以使用它们来安排任务在其下运行。

【讨论】:

以上是关于从命令行运行但不能通过 cron 运行时脚本运行良好的主要内容,如果未能解决你的问题,请参考以下文章

Ruby脚本在cron运行时抛出错误,但在用户运行时不会

节点 cron 未在 EC2 上运行

使用 cron 运行 python 脚本,matplotlib 错误

你怎么得到运行Node.js脚本的cron作业从.env文件中读取变量?

当它从命令行 bash 工作时,无法从 crontab 运行 bash 脚本

脚本从 R 运行,但不是通过命令行