我已经设置了如下的cronjob,当我从shell运行脚本时脚本运行完全正常但是当通过cronjob运行时我遇到了以下错误。
知道什么是cronjob吗?这里有环境问题吗?任何指向调试的指针?
28 21,0 * * * /usr/bin/python /local/mnt/workspace/user/Automation/script.py project branch
Traceback (most recent call last):
File "/local/mnt/workspace/user/Automation/script.py", line 74, in <module>
output = phCmdoutput(phCmd)
File "/local/mnt/workspace/user/Automation/script.py", line 28, in phCmdoutput
phPipe = Popen(phCmd, stdout=PIPE, stderr=PIPE)
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
答案 0 :(得分:1)
看起来句子phCmd
中的phPipe = Popen(phCmd, stdout=PIPE, stderr=PIPE)
正在使用某个文件或程序本身的相对路径名。您可以查看它,并将它们更改为绝对路径。
答案 1 :(得分:0)
是的,存在环境问题 - 您没有相同的环境!例如,$PATH
可能会有所不同。
最可能的原因是phCmd
包含相对路径名而不是绝对路径名的程序名。通过cron
运行程序时的一般规则是对所有内容使用完全限定的绝对路径名。