シェルスクリプト

プロセス監視・自動再起動スクリプト【サービスを自動復旧させる】

シェルスクリプト
記事内に広告が含まれています。

Webサーバーやアプリが落ちたときに自動で再起動するプロセス監視スクリプトを作ります。systemd管理外のプロセスにも使えます。

プロセス監視スクリプト

#!/bin/bash
PROCESS_NAME="nginx"
RESTART_CMD="sudo systemctl restart nginx"
LOGFILE="/var/log/process_monitor.log"
log() { echo "[$(date "+%Y-%m-%d %H:%M:%S")] $1" >> "$LOGFILE"; }
if ! pgrep -x "$PROCESS_NAME" > /dev/null; then
  log "警告: $PROCESS_NAME が停止。再起動します。"
  $RESTART_CMD
  pgrep -x "$PROCESS_NAME" > /dev/null && log "成功: 再起動完了" || log "エラー: 再起動失敗"
else
  log "正常: $PROCESS_NAME 動作中"
fi

複数プロセスを一括監視する

PROCESSES=("nginx" "mysql" "php-fpm")
for proc in "${PROCESSES[@]}"; do
  pgrep -x "$proc" > /dev/null || echo "停止: $proc"
done

まとめ

  • pgrep -x プロセス名 でプロセスの存在確認ができる
  • cronで5分ごとに実行して自動監視・自動復旧できる
  • systemdが使える場合は Restart=always の設定が推奨

コメント

タイトルとURLをコピーしました