次の場所に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