133 lines
3.7 KiB
Bash
133 lines
3.7 KiB
Bash
|
|
#!/bin/bash -
|
|||
|
|
|
|||
|
|
# 环境变量
|
|||
|
|
export PATH=$PATH
|
|||
|
|
|
|||
|
|
################################################## 参数区 ##################################################
|
|||
|
|
# 进程列表
|
|||
|
|
proc_name=(
|
|||
|
|
zone_svr_10_999_ag
|
|||
|
|
db_proxy_10_999_ag
|
|||
|
|
world_svr_10_999_ag
|
|||
|
|
zone_conn_10_999_ag
|
|||
|
|
redis_proxy_10_999_ag
|
|||
|
|
world_busd_svr_10_999_ag
|
|||
|
|
db_global_proxy_10_999_ag
|
|||
|
|
chat_svr_10_999_ag
|
|||
|
|
moderation_svr_10_999_ag
|
|||
|
|
mq_proxy_10_999_ag
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
# 进程状态
|
|||
|
|
proc_ok=()
|
|||
|
|
proc_no=()
|
|||
|
|
|
|||
|
|
################################################## 函数区 ##################################################
|
|||
|
|
# 检查进程状态
|
|||
|
|
function check_proc(){
|
|||
|
|
# 检查所有进程
|
|||
|
|
for p in ${proc_name[*]};do
|
|||
|
|
# 获取数组长度
|
|||
|
|
proc_ok_length=${#proc_ok[*]}
|
|||
|
|
proc_no_length=${#proc_no[*]}
|
|||
|
|
|
|||
|
|
# 检查进程是否运行
|
|||
|
|
run_count=$(ps -ef|grep "${p}.pid"|grep -v grep|wc -l)
|
|||
|
|
if [ "${run_count}" == "1" ];then
|
|||
|
|
is_zone_svr=$(echo "${p}" |grep -c 'zone_svr')
|
|||
|
|
stat_file="/data/home/mmog/server_999/runenv/zone_svr/bin/zone_svr_10_999_ag.stat"
|
|||
|
|
|
|||
|
|
# 检查ZONE_SVR进程
|
|||
|
|
if [ "${is_zone_svr}" == "1" ] && [ -f "${stat_file}" ];then
|
|||
|
|
# 循环检查启动状态
|
|||
|
|
for i in {1..10};
|
|||
|
|
do
|
|||
|
|
zone_stat=$(cat "${stat_file}")
|
|||
|
|
# 进程已停止
|
|||
|
|
if [ "${zone_stat}" == "0" ];then
|
|||
|
|
proc_no[${proc_no_length}]=$p
|
|||
|
|
break
|
|||
|
|
# 进程启动中
|
|||
|
|
elif [ "${zone_stat}" == "1" ];then
|
|||
|
|
sleep 1
|
|||
|
|
# 进程运行中
|
|||
|
|
elif [ "${zone_stat}" == "2" ];then
|
|||
|
|
proc_ok[${proc_ok_length}]=$p
|
|||
|
|
break
|
|||
|
|
fi
|
|||
|
|
done
|
|||
|
|
|
|||
|
|
# 循环检查后还是不为2,则标记为失败
|
|||
|
|
zone_stat=$(cat "${stat_file}")
|
|||
|
|
if [ "${zone_stat}" != "2" ];then
|
|||
|
|
proc_no[${proc_no_length}]=$p
|
|||
|
|
fi
|
|||
|
|
else
|
|||
|
|
proc_ok[${proc_ok_length}]=$p
|
|||
|
|
fi
|
|||
|
|
else
|
|||
|
|
proc_no[${proc_no_length}]=$p
|
|||
|
|
fi
|
|||
|
|
done
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 本地打印格式
|
|||
|
|
function local_print(){
|
|||
|
|
echo "------------------------------"
|
|||
|
|
echo " 墨迹大侠_中顺_999服 "
|
|||
|
|
echo "------------------------------"
|
|||
|
|
echo " 已启动进程信息 "
|
|||
|
|
echo "------------------------------"
|
|||
|
|
for i in ${proc_ok[*]};do
|
|||
|
|
ps -ef|grep "${i}.pid"|grep -v grep|awk -v "name=$i" '{print $5,name}'
|
|||
|
|
done
|
|||
|
|
echo "------------------------------"
|
|||
|
|
echo " 未启动进程信息 "
|
|||
|
|
echo "------------------------------"
|
|||
|
|
for i in ${proc_no[*]};do
|
|||
|
|
echo "$i"
|
|||
|
|
done
|
|||
|
|
echo "------------------------------"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 远程打印格式
|
|||
|
|
function remote_print(){
|
|||
|
|
#打印启动进程信息
|
|||
|
|
echo "<start>"
|
|||
|
|
if [ "${#proc_ok[*]}" == "0" ]; then
|
|||
|
|
echo "_love_"
|
|||
|
|
else
|
|||
|
|
for i in ${proc_ok[*]};do
|
|||
|
|
ps -ef|grep "${i}.pid"|grep -v grep|awk -v "name=$i" '{print $5,name}'
|
|||
|
|
done
|
|||
|
|
fi
|
|||
|
|
echo "<start>"
|
|||
|
|
|
|||
|
|
#打印停止进程信息
|
|||
|
|
echo "<stop>"
|
|||
|
|
if [ "${#proc_no[*]}" == "0" ]; then
|
|||
|
|
echo "_love_"
|
|||
|
|
else
|
|||
|
|
for i in ${proc_no[*]};do
|
|||
|
|
echo "$i"
|
|||
|
|
done
|
|||
|
|
fi
|
|||
|
|
echo "<stop>"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 打印检查结果
|
|||
|
|
function check_result(){
|
|||
|
|
# 检查进程
|
|||
|
|
check_proc
|
|||
|
|
# 打印结果
|
|||
|
|
if [ -z $1 ];then
|
|||
|
|
local_print
|
|||
|
|
else
|
|||
|
|
remote_print
|
|||
|
|
fi
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
################################################## 任务区 ##################################################
|
|||
|
|
# 检查运行结果
|
|||
|
|
check_result $1
|