#!/bin/bash
#
# プロセス監視。ダウンしたら自動再起動
#
# @node
# - encoding: UTF-8N
# - install: 5分毎に監視する場合
# @code
# sudo crontab -e
# */5 * * * * ( /root/myscript/autorestart.sh ) >/dev/null 2>&1
# @endcode
#
# @version $Revision$
#

# 監視対象のプロセス名(inetd)を列挙。半角スペースで複数区切り
# process=(httpd sshd snmpd dhcpd postfix dovecot mailman named mysqld lsyncd);
process=(lsyncd);

# 監視対象のネットワークインターフェース。ネットワークが落ちる時に指定。
#IFACE=ppp0
IFACE=

# 各プロセスの稼働状況を調べ、停止していたら再起動する
for ps in ${process[@]}
do
	isAlive=`ps -ef | grep $ps | grep -v grep | wc -l`
	if [ $isAlive = 0 ]; then
		/etc/rc.d/init.d/$ps stop > /dev/null 2>&1
		sleep 5
		/etc/rc.d/init.d/$ps start > /dev/null 2>&1
	fi
done

# PPPoE接続の状態を確認し、切断されていたら再接続する
if [ "$IFACE" != "" ]; then
	if TMP=`LC_ALL=C /sbin/ifconfig | egrep ^$IFACE -A 1` ; then
		true
	else
		/sbin/ifdown $IFACE > /dev/null 2>&1
		sleep 1
		/sbin/ifup $IFACE > /dev/null 2>&1
	fi
fi

exit 0
