从命令行运行但不能通过 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 运行时脚本运行良好的主要内容,如果未能解决你的问题,请参考以下文章
使用 cron 运行 python 脚本,matplotlib 错误
你怎么得到运行Node.js脚本的cron作业从.env文件中读取变量?