web-dev-qa-db-ja.com

決して殺されないpythonスクリプトを実行する

新しい画面でpython script.pyを実行しているスクリプトがありますが、スクリプトが強制終了されることがあります。

18
21
Restarting processes... done
2
Killed

コンソールを閉じてもスクリプトが強制終了されないようにするにはどうすればよいですか? &またはnohupを使用しますか?

3
donald

このコードをスクリプトに追加することをお勧めします http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/

または画面を使用します。

編集:これはもう少し現代的ですが、私はそれを使用していません(私はカスタムのものを使用しています) http://pypi.python.org/pypi/python-daemon

1
Publiccert

GNU screenセッション内で実行されているということですか?この場合、スクリプトに問題がなく、この問題が原因でスクリプトが終了しない限り、強制終了することはできません。

screenを使用しない場合は、startuseまたはtmux(私はもっと好きです)を使用してください。

0
Sven

それを行うための現代的な方法は、systemdを使用することです。 screen/tmuxを使用せずにtype=Simpleを使用してサービスユニットを作成し、restart=alwaysオプションを設定して、予期しない終了時にスクリプトを再起動します。

Screen/tmuxの代わりに、start-stop-daemon- Debianベースのシステム用のネイティブツールを使用してアプリケーションを悪魔化することもできます。ただし、終了時に再起動するには、monitなどのサードパーティツールを使用して実装する必要があります。

0
Anton Danilov