120 lines
2.7 KiB
Bash
120 lines
2.7 KiB
Bash
#!/bin/bash
|
|
omcbinpath="/usr/local/omc/bin"
|
|
|
|
function debug_log()
|
|
{
|
|
watcherLogFile=/usr/local/omc/log/check_proc_status`date +%Y%m%d`.log
|
|
timestr=`date +%H:%M:%S`
|
|
#echo $timestr
|
|
echo "$timestr $1" >> $watcherLogFile
|
|
}
|
|
|
|
|
|
process_id=0
|
|
function get_process_id()
|
|
{
|
|
# parameter: process_name
|
|
progname=$1
|
|
process_id=`ps -aef|grep -v grep|grep '\./'$1 |awk '{print $2}'`
|
|
}
|
|
|
|
process_status=0
|
|
function get_process_status()
|
|
{
|
|
# parameter: process_name
|
|
progname=$1
|
|
|
|
pid=`ps -aef|grep -v grep|grep -c '\./'$1`
|
|
if test $progname == "mysqld" ; then
|
|
pid=`ps -aef|grep -v grep|grep -c 'mysqld'`
|
|
fi
|
|
if test $progname == "httpd" ; then
|
|
pid=`ps -aef|grep -v grep|grep -c 'httpd'`
|
|
fi
|
|
|
|
|
|
|
|
if test $pid -ge 1 ; then
|
|
process_status=1
|
|
else
|
|
process_status=0
|
|
fi
|
|
}
|
|
|
|
function get_param()
|
|
{
|
|
# parameter: file_name parameter_name
|
|
ret=`grep "$2=" $1|awk -F= '{print $2}'`
|
|
echo $ret
|
|
}
|
|
|
|
function get_master_process()
|
|
{
|
|
master_line=`grep -n '\[master_task\]' $omcbinpath/conf/server.conf |awk -F: '{print $1}'`
|
|
slave_line=`grep -n '\[slave_task\]' $omcbinpath/conf/server.conf |awk -F: '{print $1}'`
|
|
sed -n "${master_line},${slave_line}"p $omcbinpath/conf/server.conf|grep '^\s*[a-zA-Z]' |awk '{print $1}'
|
|
}
|
|
|
|
function get_slave_process()
|
|
{
|
|
slave_line=`grep -n '\[slave_task\]' $omcbinpath/conf/server.conf |awk -F: '{print $1}'`
|
|
sed -n "${slave_line},$"p $omcbinpath/conf/server.conf|grep '^\s*[a-zA-Z]' |awk '{print $1}'
|
|
}
|
|
|
|
omc_state=`get_param $omcbinpath/dual/dualstate State`
|
|
master_list=`get_master_process`
|
|
slave_list=`get_slave_process`
|
|
|
|
get_process_status "mysqld"
|
|
mysql_status=$process_status
|
|
get_process_status "httpd"
|
|
http_status=$process_status
|
|
get_process_status "omcMain"
|
|
omcMain_status=$process_status
|
|
|
|
status_list="$mysql_status$http_status$omcMain_status"
|
|
|
|
# master
|
|
if [ "x$omc_state" == "xMaster" -o "x$omc_state" == "xSingle" ] ;then
|
|
for prog in $master_list; do
|
|
get_process_status "$prog"
|
|
prog_status=$process_status
|
|
status_list="$status_list$prog_status"
|
|
if [ $prog_status -eq 0 ] ;then
|
|
debug_log "Run in $omc_state, start process $prog"
|
|
cd $omcbinpath
|
|
./$prog -d
|
|
sleep 1
|
|
fi
|
|
done
|
|
fi
|
|
|
|
# slave
|
|
if [ "x$omc_state" == "xSlave" ] ;then
|
|
for prog in $master_list; do
|
|
get_process_status "$prog"
|
|
if [ $process_status -eq 1 ] ;then
|
|
if [ `echo $slave_list|grep -c $prog` -eq 0 ] ;then
|
|
debug_log "Run in $omc_state, stop process $prog"
|
|
get_process_id $prog
|
|
kill -9 $process_id
|
|
fi
|
|
fi
|
|
done
|
|
|
|
for prog in $slave_list; do
|
|
get_process_status "$prog"
|
|
prog_status=$process_status
|
|
status_list="$status_list$prog_status"
|
|
if [ $prog_status -eq 0 ] ;then
|
|
debug_log "Run in $omc_state, start process $prog"
|
|
cd $omcbinpath
|
|
./$prog -d
|
|
sleep 1
|
|
fi
|
|
done
|
|
fi
|
|
|
|
echo $status_list
|
|
echo $status_list > $omcbinpath/dual/procstatus
|