Files
xkm-server/server_999/runenv/check_all.sh

133 lines
3.7 KiB
Bash
Raw Normal View History

2025-05-20 15:31:00 +08:00
#!/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