(bash)プロセスを監視して、プロセスが停止したら再度プロセスを起動する

Bash Linux Programming

筆者の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!!!!

シェルスクリプト組んで自動で各種運用をするのは楽しいですね。