Python脚本手动运行但不在cronjob中运行

Python脚本手动运行但不在cronjob中运行

所以这是一个超级奇怪的问题。我有一个 python 脚本,它根据某些条件通过 subprocess.call 调用许多 bash 命令。现在,脚本手动运行得很好,但是当放入 cronjob 时它会失败,但只有当它到达代码的特定部分时才会失败。这部分代码对用户运行一个bstat和一个命令。bkill我尝试过对这两个命令使用 subprocess.call、subprocess.Popen、subprocess.check_output ,每次到达它们时,它都会挂起并且不执行任何操作。然后我在 var/spool/mail/root 中收到此消息

File "/root/Desktop/script.py", line 75, in <module>
    print subprocess.check_output(['bstat' '-q' 'viz' '-u' ,user,])
  File "/usr/lib64/python2.7/subprocess.py", line 568, in check_output
    process = Popen(stdout=PIPE, *popenargs, **kwargs)
  File "/usr/lib64/python2.7/subprocess.py", line 711, in __init__
    errread, errwrite)
  File "/usr/lib64/python2.7/subprocess.py", line 1327, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

我尝试过:对每个可能的命令使用绝对路径,在运行之前将目录更改为脚本的目录,在运行之前调用 /bin/python 。我完全不知所措。更奇怪的是,还有其他 subprocess.call 命令在调用 bash 脚本时工作得很好,但当涉及到这两个命令时,它不知道该怎么做。下面是它挂起的第一个子进程命令:

print subprocess.check_output(['bstat' '-q' 'viz' '-u' ,user,])

答案1

子进程调用正在寻找...中的bstat或程序,除非 cron 环境中没有 $PATH`。指定这些程序的完整路径,即使是在 Python 脚本内,它也应该可以工作。bkill$PATH

相关内容