cron:提供完整路径时找不到

Int*_*ked 2 cron

这似乎只是另一个基本的 cron 问题,但我无法弄清楚:

@hourly "/usr/bin/php /usr/local/bin/notify.sh"
Run Code Online (Sandbox Code Playgroud)

我将一堆东西从一台服务器迁移到另一台服务器,并且在一些工作后能够让大多数事情顺利运行,现在我正在灭火。

当应该运行以下 cron 作业时,我每小时都会收到这封电子邮件:

/bin/sh: 1: /usr/bin/php /usr/local/bin/notify.sh: not found
Run Code Online (Sandbox Code Playgroud)

通常,not found是由 PATH 不存在引起的(cron 作业的问题),但我提供了PHP 和脚本的完整路径。该脚本以 root 身份运行,并且可以交互地运行该脚本。

脚本有755权限,只是为了安全(任何人都可以读取或执行),所以权限不是问题。

我可以手动运行脚本和它调用的脚本,所以我不知道这个“未找到”是从哪里来的。

除了运行之外,cron 日志中没有任何可疑之处。

这在旧服务器上正常工作。

这里是否有其他因素可能在起作用,或者我如何尝试追踪此问题的原因?

ste*_*ver 5

入口

@hourly "/usr/bin/php /usr/local/bin/notify.sh"
Run Code Online (Sandbox Code Playgroud)

作为单个参数传递/usr/bin/php /usr/local/bin/notify.sh/bin/sh -c。这就是为什么错误消息是

/bin/sh: 1: /usr/bin/php /usr/local/bin/notify.sh: not found
Run Code Online (Sandbox Code Playgroud)

而不是任何一个

/bin/sh: 1: /usr/bin/php: not found

Could not open input file: /usr/local/bin/notify.sh
Run Code Online (Sandbox Code Playgroud)

要分别传递程序/usr/bin/php及其文件名参数/usr/local/bin/notify.sh,请删除引用:

@hourly /usr/bin/php /usr/local/bin/notify.sh
Run Code Online (Sandbox Code Playgroud)