ホーム テクノロジー LINUX ダウン時にサービスを自動再起動するにはどうすればよいですか?

ダウン時にサービスを自動再起動するにはどうすればよいですか?


ダウン/クラッシュした場合にサービスを再起動するシェル スクリプト

さまざまな理由でプロセスがクラッシュ/ダウンするのはよくあることですが、問題を調査して修正することはできますが、それには少し時間がかかる場合があります。

ただし、ダウンタイムを短縮して可用性を向上させるためにすぐに実行できることの 1 つは、プロセスがダウンした場合の再起動を自動化することです。

これを高速道路で実現しましょう –シェルスクリプト

次のシェル スクリプトを使用して crontab を実行すると、サービスが 15 分ごとにチェックされ (間隔は調整可能)、実行されていないことが判明した場合は開始されます。クールですね?

この記事では、サービスがダウンした場合にサービスを開始する 2 つの例を示します。

CentOS/RHEL 7 以降を使用している場合は、systemd を使用して再起動する方法について説明しているこの記事も確認してください。

MySQL、PHP-FPM、Nginx がダウンした場合は自動再起動します

数週間前、 EasyEngineを使用して Geek Flare をDigitalOceanに移行したところ、MariaDB が 1 週間に 2 回クラッシュしました。

マリアDBがクラッシュしました
マリアDBがクラッシュしました
マリアDBがクラッシュしました

早朝にクラッシュして 3 時間以上ダウンしていましたが、これは良くありません。これは私のブログなので、何の影響もありませんが、それでも気分が悪いです。

さて、ショータイムです…

  • vi エディターを使用して、目的の場所にファイルを作成します (このデモでは、 /opt/startifdown.sh の下に置きます)。
  • 以下のスクリプトをコピーしてファイルに貼り付けて保存します
#!/bin/bash
#Scripts to start services if not running
ps -ef | grep nginx |grep -v grep > /dev/null
if [ $? != 0 ]
then
       /etc/init.d/nginx start > /dev/null
fi
ps -ef | grep php5-fpm |grep -v grep > /dev/null
if [ $? != 0 ]
then
       /etc/init.d/php5-fpm start > /dev/null
fi
ps -ef | grep mysql |grep -v grep > /dev/null
if [ $? != 0 ]
then
       /etc/init.d/mysql start > /dev/null 
fi
  • ファイルの権限を実行可能に変更します
chmod 755 startifdown.sh

手動でテストして、スクリプトが実行可能であることを確認します。

サービスを停止し、スクリプトを使用してサービスが起動しているかどうかを確認できます。満足したら、これを cron に入れて 15 分ごとに実行できます。

 */1 * * * * /opt/startifdown.sh

間隔時間を変更する際にインスピレーションが必要な場合は、私の crontab の記事を参照してください。

これで、この小さなスクリプトがサービスがクラッシュした場合の起動を処理してくれるので、3 時間のダウンタイムは発生しません。

ずっといい!

WebSphere DMGR、Nodeagent、JVM がダウンした場合は自動再起動します

次のスクリプトを含むファイルを作成します。startwasifdown.sh という名前を付けます。

 #!/bin/bash
#Scripts to start services if not running
#Specify DMGR Path Here
DMGR=/opt/IBM/WebSphere/AppServer/profiles/Dmgr01
#Specify Profile Path Here
Profile=/opt/IBM/WebSphere/AppServer/profiles/AppSrv01
ps -ef | grep dmgr |grep -v grep > /dev/null
if [ $? != 0 ]
then
       $DMGR/bin/startManager.sh > /dev/null
fi
ps -ef | grep nodeagent |grep -v grep > /dev/null
if [ $? != 0 ]
then
       $Profile/bin/startNode.sh > /dev/null
fi
ps -ef | grep server1 |grep -v grep > /dev/null
if [ $? != 0 ]
then
       $Profile/bin/startServer.sh server1 > /dev/null
fi

注:環境に合わせてパスを変更し、複数の JVM の行を追加してください。

  • ファイルの権限を実行可能に変更します
chmod 755 startwasifdown.sh

手動でテストし、満足できたら、これを cron に入れて 15 分ごとなど、都合のよい方法で実行できます。

 */1 * * * * /opt/ startwasifdown.sh

これは、作業を自動化するための単なるガイドラインです。

自動化が好きですか? bash シェル スクリプトについて学習します。

「ダウン時にサービスを自動再起動するにはどうすればよいですか?」についてわかりやすく解説!絶対に観るべきベスト2動画

シャットダウン・スリープ・休止状態 ちゃんと理解して使い分けてますか?【プロが教えるパソコン豆知識】
【だれも知らない】パソコンが不調な時のシャットダウン!実は間違い!【完全シャットダウンを覚えよ!】