Debian: コマンドを「常に起動」に設定する(アップデート時に再起動)

Debian: コマンドを「常に起動」に設定する(アップデート時に再起動)

次の場所にREST APIが定義されているとします。

rest-api.py

私は「永遠に」を作りたいと思う:

setsid rest-api.py 2>&1 > /var/rest-api/log.0
logrotate rest-api.conf

# now: command to watch rest-api.py for failure and re-up

次に、書き込みタイムスタンプが変更されたら(つまり、変更を保存するとき)、コードを再起動したいと思います。どうすればいいですか?

使用できることを知っていますが、makeこれがcron最善の方法ですか?

答え1

inotifywait -e modify rest-api.py

すべてのタスクを実行するために必要ないくつかの異なる詳細があります。

rest_api=$(pwd)/rest-api.py
rest_api_conf=$(pwd)/rest-api.conf
rest_api_log=/var/log/rest-api/rest-api.log

# log
mkdir -p /var/log/rest-api
logrotate $rest_api_conf

# daemon
setsid $rest_api 2>&1 >> $rest_api_log &
pid=$!
trap "kill $pid" exit

while true; do
  inotifywait -e modify $rest_api
  kill $pid
  setsid $rest_api 2>&1 >> $rest_api_log &
  pid=$!
  trap "kill $pid" exit
done

最後に、バックグラウンドプロセスまたはデーモンとして実行します。

./rest-api.sh &
setsid ./rest-api.sh 2>&1 >/dev/null

関連情報