だからこれは非常に奇妙な質問です。特定の条件に応じて、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を呼び出そうとしました。私は完全に圧倒されました。もう1つのことは、bashスクリプトを呼び出すときに正しく機能する他のsubprocess.callコマンドがありますが、これら2つのコマンドについて何をすべきかわからないということです。最初に中断されたサブプロセスコマンドは次のとおりです。
print subprocess.check_output(['bstat' '-q' 'viz' '-u' ,user,])
答え1
bstat
cron環境に$ PATH`がない場合、子プロセス呼び出しは...またはプログラムを探します。 Pythonスクリプト内でも、これらのプログラムのフルパスを指定すると機能します。bkill
$PATH