这可能看起来只是另一个基本的 cron 问题,但我无法弄清楚这个问题:
@hourly "/usr/bin/php /usr/local/bin/notify.sh"
我将一堆东西从一台服务器迁移到另一台服务器,经过一些工作后,大多数东西都能顺利运行,现在我正在扑灭大火。
当以下 cron 作业应该运行时,我每小时都会收到这封电子邮件:
/bin/sh: 1: /usr/bin/php /usr/local/bin/notify.sh: not found
通常,未找到是由 PATH 不存在引起的(cron 作业的问题),但我提供了完整路径对于 PHP 和脚本。该脚本以 root 身份运行,并且我可以交互地运行该脚本。
该脚本有755
权限,只是为了安全起见(任何人都可以读取或执行),所以权限不是问题。
我可以手动运行脚本及其调用的脚本,所以我不知道这个“未找到”来自哪里。
除了运行的内容之外,cron 日志中没有任何可疑的内容。
这在旧服务器上运行正常。
这里是否可能存在其他因素,或者我如何尝试追踪此问题的原因?
答案1
入口
@hourly "/usr/bin/php /usr/local/bin/notify.sh"
作为单个参数传递/usr/bin/php /usr/local/bin/notify.sh
给。/bin/sh -c
这就是错误消息的原因
/bin/sh: 1: /usr/bin/php /usr/local/bin/notify.sh: not found
而不是其中任何一个
/bin/sh: 1: /usr/bin/php: not found
Could not open input file: /usr/local/bin/notify.sh
要单独传递程序/usr/bin/php
及其文件名参数/usr/local/bin/notify.sh
,请删除引号:
@hourly /usr/bin/php /usr/local/bin/notify.sh