web-dev-qa-db-ja.com

ubuntuのUPSTART機能をテストして、スクリプトが強制終了された場合に自動的に再起動されることを確認するにはどうすればよいですか?

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

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

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

chdir /tekooz
exec python testing.py
respawn

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

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

これは私の以下ですpythonスクリプト-

#!/usr/bin/python
import time

while True:
    print "Hello World"
    time.sleep(5)

しかし、Pythonスクリプトが強制終了され、その後自動的に再起動されるかどうかを確認するためにテストするにはどうすればよいですか?PIDが変更され続けるため、PIDを強制終了できません。私のps axtesting.py

このシナリオをテストする方法を誰かに教えてもらえますか?スクリプトが強制終了または停止した場合に、スクリプトを自動的に再起動できるようにしようとしています。

3
arsenal

ただ走れ:

Sudo status testing

これにより、実行中のupstartサービスのステータスがわかります。

そして、tail -f /var/log/syslogを使用すると、リスポーンしているかどうかを確認できます。

「HelloWorld」が行くのはどこにも行かないと思います。

以下でテストすることをお勧めします:

#!/usr/bin/python
import time
import os

with open('/var/tmp/testing.log', 'a') as fp:
    try:
        while True:
            print >> fp, "Hello World", os.getpid()
            fp.flush()
            time.sleep(5)
    except Exception as e:
        print >> fp, 'exception', e
        fp.flush()
        raise

他のウィンドウでtail -f /var/tmp/testing.logを実行します。

5
Zelda

まず第一に、なぜPIDが変わるのですか?それは意味がありません。プロセスを強制終了してPIDの変更を確認した場合は、期待どおりに再起動されたことを意味します。スクリプトを強制終了していないのにPIDが変更された場合、スクリプトは何かによって強制終了され、再生成されます。

とにかく、あなたは名前で、PIDで殺すことができます(Sudo pkill testing.py)または実行中のすべてのpythonプロセスを強制終了します(大幅ですが、実行中のプロセスが1つだけであると仮定すると問題ありません):Sudo killall python

4
terdon