- 将 Java 版本从17.0.16+8 升级到 21.0.8+9 - 优化停止脚本以更准确地获取应用进程 ID - 添加使用 jps 命令获取进程 ID 的备选方案
42 lines
886 B
Bash
42 lines
886 B
Bash
#!/bin/bash
|
|
|
|
original_command="$0"
|
|
application_name="leopard-server-1.0.0.jar"
|
|
|
|
function get_pid() {
|
|
ID=$(ps -ef | grep "$application_name" | grep -v grep | grep -v $original_command | awk '{ print $2 }')
|
|
if [[ -z "$ID" ]]; then
|
|
ID=$(ps aux | grep "$application_name" | grep -v grep | grep -v $original_command | awk '{print $2}')
|
|
if [[ -z "$ID" ]]; then
|
|
ID=$(/home/ubuntu/jdk-21.0.8+9/bin/jps -lmvV | grep "$application_name" | awk '{print $1}')
|
|
fi
|
|
fi
|
|
echo $ID
|
|
}
|
|
|
|
pid=$(get_pid)
|
|
|
|
if [[ -z "$pid" ]]; then
|
|
echo "Application is already stopped."
|
|
exit 0
|
|
fi
|
|
|
|
echo "Stopping $pid..."
|
|
kill $pid
|
|
|
|
LOOPS=0
|
|
while (true); do
|
|
cpid=$(get_pid)
|
|
if [[ -z "$cpid" ]]; then
|
|
echo "Oook! cost:$LOOPS"
|
|
break
|
|
fi
|
|
LOOPS=$(($LOOPS+1))
|
|
if [[ $(($LOOPS%15)) -eq 0 ]]; then
|
|
echo "Wait timeout, try to force kill $pid..."
|
|
kill -9 $pid
|
|
fi
|
|
sleep 1s
|
|
done
|
|
|