2017-02-20 11 views
0

私は私のUNIXサーバ上のバックグラウンドで実行したいpythonスクリプトを持っています。キャッチすることは、前のステップが次のタスクに移る前に終了するのを待つためにPythonスクリプトが必要ですが、終了した後も自分の仕事が実行され続けることです。PythonスクリプトをUNIXのバックグラウンドで実行する

は、私は次のように設定することができますが、確認が好きだと思う:スクリプトの抜粋は、それが同じディレクトリに編集した実行可能ファイルを出力するので、コマンド2がコマンド1からの出力に依存しているところ、このようになります

。コマンド1と2にnohup/&が含まれていないことを指摘したいと思います。

subprocess.call('unix command 1 with options', shell=True) 
subprocess.call('unix command 2 with options', shell=True) 

私はそうのように私のPythonスクリプトを開始するとした場合:私は明示的にコマンドを私のスクリプトUNIXで/ &をnohupを入れていないが、代わりにパイソンを走ったので、

% nohup python python_script.py & 

は私のスクリプトは、バックグラウンドで実行されます背景のスクリプト?

答えて

3

いいえ、nohup(ハングアップなし)でPythonスクリプトを実行すると、ネットワークが切断され、末尾の&シンボルがスクリプトをバックグラウンドで実行するときに、スクリプトが終了しません。

スクリプトの出力を表示することはできますが、nohupはstdoutをnohop.outファイルにパイプします。 ...

$ tail -f nohop.out 

簡単なメモnohup.outファイルについて

nohup.out   The output file of the nohup execution if 
        standard output is a terminal and if the 
        current directory is writable. 

または&にコマンドを追加する:あなたは、その出力ファイルを尾行することにより、リアルタイムで出力を子守することができますPythonスクリプトをデアモンとして実行し、ログをテールします。

$ nohup python python_script.py > my_output.log & 
$ tail -f my_output.log 
+0

ありがとうございます - デフォルトではnohup.outファイルが作成されていますか?バックグラウンドでプログラムを起動した後にディレクトリ項目をリストすると、このファイルは表示されません。 – Lisle

+0

はいそうです。上記の私の更新をチェックしてください^^ –

0

あなたはを行うとき、それがSIGHUPされていないlogoutを使用し、代わりにあなたの端末を閉じるnohup

  1. chomd +x /path/to/script.py
  2. nohup python /path/to/script.py &

それとも

を使用することができますシェルはSIGHUPを子プロセスのいずれかに送信しません。

関連する問題