Python 스크립트는 수동으로 실행되지만 cronjob에서는 실행되지 않습니다.

Python 스크립트는 수동으로 실행되지만 cronjob에서는 실행되지 않습니다.

그래서 이것은 매우 이상한 질문입니다. 특정 조건에 따라 subprocess.call을 통해 많은 bash 명령을 호출하는 Python 스크립트가 있습니다. 이제 스크립트는 수동으로 잘 실행되지만 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을 호출하려고 시도했습니다. 나는 완전히 압도당했습니다. 더 이상한 점은 bash 스크립트를 호출할 때 제대로 작동하는 다른 subprocess.call 명령이 있지만 이 두 명령에 관해서는 무엇을 해야할지 모른다는 것입니다. 중단된 첫 번째 하위 프로세스 명령은 다음과 같습니다.

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

답변1

bstatcron 환경에 $PATH`가 없는 경우 하위 프로세스 호출은 ...에서 또는 프로그램을 찾습니다 . Python 스크립트 내에서도 이러한 프로그램의 전체 경로를 지정하면 작동합니다.bkill$PATH

관련 정보