cronjob 错误“/bin/sh:/path/to/file:没有此文件或目录”

cronjob 错误“/bin/sh:/path/to/file:没有此文件或目录”

我已经安装了一个允许在服务器上运行 javascript 的 python 软件

我已将二进制文件(jsrunner)放在此地址

/usr/local/bin/jsrunner

所以当我在 ssh 中尝试它时,它运行良好

/usr/local/bin/jsrunner /home/domain/public_html/test.js

我从 test.js 获得了一些输出

所以我在 cronjob 中输入了相同的命令

* * * * * /usr/local/bin/jsrunner /home/domain/public_html/test.js

但过了一段时间,我没有得到预期的结果,所以我在 cronjob 上启用了电子邮件报告,然后我收到了一封标题为

Cron <domain@CentOS-67-64-minimal> /usr/local/bin/jsrunner /home/domain/public_html/test.js

包含这个错误

/bin/sh: /usr/local/bin/jsrunner: No such file or directory

为什么在 commend 的开头有/bin/sh:?为什么当我从 cronjob 运行它时找不到该文件?

请注意我的 cronjob 对于使用 curl 或二进制的其他文件(如 php)运行良好,只有这个特定的软件/bin 文件才会导致这个错误

答案1

我在其他服务器上都能正常工作,只是这个新服务器出现了错误,而且只在 cronjob 上

我遇到了同样的问题,但使用的是 inkscape 二进制文件。它通过 apache 完美运行,但通过 nginx 无法运行。问题的根源是环境变量 PATH。

例如来自 cron

# crontab -l
* * * * * echo $PATH > /tmp/path.log

# cat /tmp/path.log
/usr/bin:/bin

从控制台

# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/opt/nodejs/bin

相关内容