ビットコイン取引のBotをサーバ上で実行させているのですが、
エントリ条件に合致するまで待ち続ける処理を作っているにも関わらず、
取引所のAPIが応答しないなどで異常終了してしまうことが多々あります。
cronで時刻起動すると多重起動になってしまうので、ちょっと工夫しました。
シェルを作って判定し、起動していなければ再起動させてあげればいい
結論としてはシェルを作成してプロセスをチェックし、起動していない場合のみ起動するように指定してみました。
#!/bin/bash date #プロセスを監視して起動していない場合、起動する # hoge.py isAlive=`ps -ef | grep "python hoge.py" | \ grep -v grep | wc -l` if [ $isAlive = 1 ]; then echo "プロセスは生きています" else echo "プロセスは死んでいます。再起動します" cd /home/ec2-user/environment/bitcoinbot python hoge.py fi
以下のエントリが参考にさせていただき、作成しました。
Linux上のプロセスを監視して、プロセスがダウンしたら再起動させるShell
公開中のLinuxでプロセスを監視したい場合、「プロセスが生きているか」「死んでいるか」をチェックする必要があ…
上記では無限にループさせて判定させていますが、
そこはcronのほうが制御しやすいかと思い実装していません。
今回は「python hoge.py」というプロセスをチェックしています。
プロセス名はそれぞれだと思うので、
psコマンドの結果から確認して入れ替えましょう。
Linuxサーバ上で運用している人が多いと思うので、
Linuxのコマンドやシェルについて学んでおくとこういうとき便利です。
コメント