我已经安装了一个允许在服务器上运行 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