我有一个cronjob如下:
*/10 * * * * root cd /some/directory && python3 FILE.py >> Output.txt 2>&1
如果我从常规命令行运行该命令,它可以正常工作。但是当从cronjob运行时,我得到/bin/sh: python3: not found
但是当我运行echo $PATH
时,它会返回
/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin:/usr/local/python3/bin:/opt/bin
(请注意/usr/local/python3/bin
包含在此目录
我该如何解决这个问题?
答案 0 :(得分:3)
似乎cronjob的环境与交互式shell不同。您可以编辑cronjob以使用绝对路径来调用该python脚本。或者你可以编写一个包装器sh脚本来准确设置python脚本所需的环境,并让cronjob执行该脚本。
https://askubuntu.com/questions/23009/reasons-why-crontab-does-not-work
答案 1 :(得分:1)
由于crontab运行时不使用environnemnt变量,因此您可以在脚本中创建它们。 ...但是您还可以检查/ bin / python是否退出(或/ sbin / python),并将python替换为存在的
*/10 * * * * root cd /some/directory && /bin/python3 FILE.py >> Output.txt 2>&1
或
*/10 * * * * root cd /some/directory && /sbin/python3 FILE.py >> Output.txt 2>&1