重启应用进程:
#!/bin/bash
#重启应用进程
proc_key=test
start_path=/home/weblogic/test/test/bin
start_script=startup.sh
stop_script=shutdown.sh
# 检查服务状态
check_proc_status () {
local flag=0
for i in $(seq 1 $TIMEOUT); do
sleep 1; echo -n '.'
ps -ef | grep -v grep|grep "$proc_key" || {
flag=1
break
}
done
if [[ $flag == 1 ]]; then
echo '服务已停止.'
return 1
else
echo '服务已运行.'
return 0
fi
}
check_proc_status_once () {
ps -ef | grep -v grep|grep "$proc_key"
}
if check_proc_status_once ; then
cd $start_path && sh $stop_script
if [ $? == 0 ]; then
echo '停止脚本执行成功.'
else
echo '停止脚本执行返回值非零,请检查!'
fi
# 执行停服务命令后,再检查服务状态
echo "执行停服务脚本后,再检查服务状态: $proc_key"
if check_proc_status ; then
ps aux |grep $proc_key > dead.log
ps aux |grep $proc_key |grep -v grep|awk '{print $2}' |xargs kill -9;
echo "进行kill 服务操作"
sleep 2
# kill 服务后, 再检查服务状态
check_proc_status_once || {
echo "服务已停止"
} || {
echo "服务已运行,kill 服务操作未成功, 请检查!"
}
fi
else
echo "服务已停止."
fi
echo "启动服务"
sleep 2
cd $start_path || exit 1
sh $start_script
进程和端口检测:
#!/bin/bash
#进程端口检测
proc_key="test"
TIMEOUT=20
port=8848
# 检查服务状态
check_proc_status () {
echo "检查进程状态"
local flag=0
ps -ef | grep -v grep|grep -q $proc_key || {
flag=1
}
if [[ $flag == 1 ]]; then
echo "服务:$proc_key,服务不存在."
exit 1
else
echo "服务:$proc_key,服务已运行."
return 0
fi
}
# 检查检查进程端口状态
check_port_status () {
echo "检查端口状态"
local status=1
for i in $(seq 1 $TIMEOUT); do
sleep 1; echo -n '.'
ss -tunlp | grep -q ":${port}\>" && {
status=0
break
}
done
#打印端口状态
if [ ${status} -eq 0 ]; then
echo "端口: $port, 状态:已监听"
return 0
else
echo "端口: $port, 状态:未监听"
exit 1
fi
}
check_proc_status
check_port_status