配置config.ini:
#进程名|部署路径(启动路径)|启动命令
./redis-server 127.0.0.1:6379|/root|/root/redis/start.sh
脚本主体:
#!/bin/bash
#. ~/.bash_profile
#################配置#####################
#监控的用户
login_user=ddxx
#配置文件路径
file_config_path=./config.ini
#################配置#####################
#统计
proc_count(){
file_conf=$1
if [ -f "$file_conf" ];then
cat $file_conf |grep -v ^# | grep -v "^$" | while read line
do
proc_flag=`echo $line | awk -F '|' '{print $1}'`
proc_path=`echo $line | awk -F '|' '{print $2}'`
proc_cmd=`echo $line | awk -F '|' '{print $3}'`
#调用统计进程函数,参数中有空格,一定要双眼号
process_num=`ps -fu $login_user | grep "$proc_flag" | grep -v grep | wc -l`
echo $proc_flag"进程数为:"$process_num
if [ $process_num -ge 1 ];then
echo $proc_flag"进程存在!!!"
else
echo $proc_flag"进程不存在,进程异常,启动进程!!!"
#执行命令
cd $proc_path;$proc_cmd
fi
done
else
echo "$file_conf"配置文件不存在
fi
}
#检查是否已有脚本在运行,避免进程卡死
self_num=`ps -fu $login_user | grep monitor_moddleware.sh(自身脚本名称) | grep -v grep | wc -l`
echo $self_num
if [ $self_num -gt 5 ];then
echo "已有脚本在运行"
exit
else
echo "继续执行脚本"
proc_count $file_config_path
fi