これを行う最も簡単な方法は、次の場所に配置することです/etc/init/something.conf
。
start on runlevel [2345]
stop on runlevel [016]
respawn
exec python /path/to/your/script.py
Respawnは、強制終了された場合、またはゼロ以外で終了した場合(キャッチされない例外のように)起動します。これはUbuntu 10.04に戻って動作します。
12.04を使用している場合は、さらに豪華になります。上記はrootとしてスクリプトを実行します。12.04では、setuid / setgidを追加できます。
start on runlevel [2345]
stop on runlevel [016]
respawn
setuid nobody
setgid nogroup
exec python /path/to/your/python.py
利用可能なネットワークがないときにスクリプトが終了し、不安定なネットワーク接続でスクリプトを実行する予定がある場合は、それを修正して、生存/再試行を続ける必要があります。ただし、それができない場合は、ネットワークデバイスが起動したときに手動で起動する必要がある場合もあります。これを次の場所に配置できます/etc/network/if-up.d/yourscript
(chmod + xで実行可能にします)
#!/bin/sh
exec start wait-for-state WAITER=$IFACE-yourscript WAIT_FOR=something
ここで、スクリプトはこの特定のスクリプトに任意で固有なものであり、「何か」はジョブ名と同じです(/etc/init/something.conf
前述の提案など)。