Files
xkm-server/server_999/runenv/check_all.sh
2025-05-20 15:31:00 +08:00

133 lines
3.7 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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