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の設定が推奨



コメント