(bash)プロセスを監視して、プロセスが停止したら再度プロセスを起動する
筆者のLinuxサーバ上ではbitflyer(bitcoin)のサーバに対して3秒毎にアクセスしてjsonデータを取得して、ごにょごにょと計算させています。
このプロセスの処理がなんらかの原因で稀に落ちてしまった時に、再度プロセスを再起動させたいと思い、今回は以下のスクリプトを書いてみたので紹介します。
#!/bin/bash
PR_NM=getbfchart2sql
count=`ps -ef | grep $PR_NM | grep -v grep | wc -l`
if [ $count = 0 ]; then
echo `date +"%Y/%m/%d %H:%M:%S" ` "Process $PR_NM is Down.."
echo `date +"%Y/%m/%d %H:%M:%S" ` "Process $PR_NM Start!!!!"
nohup /usr/bin/getbfchart2sql.py &
else
echo `date +"%Y/%m/%d %H:%M:%S" ` "Process $PR_NM is OK!!!!"
fi
このスクリプトをcrontab -eで以下のように1分毎に実行して監視します。
*/1 * * * * /home/user/bin/checkbfpy.sh 2 >> /tmp/checkbfpy.log
で、運用した結果のログは以下のようになります。
2020/08/09 23:41:01 Process getbfchart2sql is OK!!!!
2020/08/09 23:42:01 Process getbfchart2sql is Down..
2020/08/09 23:42:01 Process getbfchart2sql Start!!!!
2020/08/09 23:43:01 Process getbfchart2sql is OK!!!!
シェルスクリプト組んで自動で各種運用をするのは楽しいですね。