web-dev-qa-db-ja.com

UPSTARTを使用して1秒ダウンした後、スクリプトを再起動する方法pythonスクリプト?

私は私のPythonスクリプトをUbuntuのupstart機能を使用して実行しているので、何らかの理由でmy Pythonスクリプトが停止または強制終了した場合、自動的に再起動できます。正常に動作しています-

そこで、UbuntuのUPSTART機能を使用してPythonスクリプトを自動的に再起動することにしました。

このようなtesting.confファイルを/etc/init/testing.confに作成した後-

start on runlevel [2345]
stop on runlevel [016]

chdir /tekooz
exec python testing.py
respawn

Sudoコマンドの下で実行して起動しましたが、ps axを使用してそのプロセスが実行されていることがわかります。また、pythonスクリプトも正常に実行されています。

root@bx13:/tekooz# Sudo start testing
testing start/running, process 27794

上記のプロセスのPIDを強制終了すると、数ミリ秒またはマイクロ秒以内に自動的に再起動されます。

pythonスクリプトが1秒後に停止または終了した場合に再起動する可能性はありますか?すぐに再起動したくありません。

1
arsenal

なぜこの「テスト」にルートディレクトリを使用しているのかよくわかりません。また、それがあなたがしたいことだとは本当に思っていません(システムを壊してしまう可能性があります)。また、ルート(#プロンプト)の場合は、「Sudo」を実行する必要がないことに注意してください。達成しようとしていることを反映するように質問を編集することを検討してください。

完全を期すために繰り返します。

Sudoを実行する必要がないように、confファイルを~/.config/upstart/に配置することを検討してください。たとえば、initctl start testingを使用してスクリプトを開始します。 (私はあなたのconfファイルがroot権限を必要としないと仮定しています。)

cookbook を読み取ると、pre-startpost-start、およびpost-stopスタンザが再起動されたジョブで再実行されることが示されます。つまり、次のようなことができます。

start on runlevel [2345]
stop on runlevel [016]

chdir /path/to/a/folder
respawn

exec python testing.py

post-stop script
  sleep 1
end script

この方法では、スクリプトが再生成されるまでに1秒の遅延があります。 (ただし、pre-startスタンザでも同じことができます。このようにすると、最初の呼び出しに1秒の遅延が生じます。)

3
edwin