私は私の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秒後に停止または終了した場合に再起動する可能性はありますか?すぐに再起動したくありません。
なぜこの「テスト」にルートディレクトリを使用しているのかよくわかりません。また、それがあなたがしたいことだとは本当に思っていません(システムを壊してしまう可能性があります)。また、ルート(#
プロンプト)の場合は、「Sudo」を実行する必要がないことに注意してください。達成しようとしていることを反映するように質問を編集することを検討してください。
完全を期すために繰り返します。
Sudoを実行する必要がないように、confファイルを
~/.config/upstart/
に配置することを検討してください。たとえば、initctl start testing
を使用してスクリプトを開始します。 (私はあなたのconfファイルがroot権限を必要としないと仮定しています。)
cookbook を読み取ると、pre-start
、post-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秒の遅延が生じます。)