48 lines
1.0 KiB
Bash
48 lines
1.0 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
|
||
|
|
# 快速停止脚本 - 无需确认
|
||
|
|
|
||
|
|
if [ "$(id -u)" -ne 0 ]; then
|
||
|
|
echo "需要 root 权限,请使用: sudo $0"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
APP_NAME="syslog-serve"
|
||
|
|
PID_FILE="/tmp/${APP_NAME}.pid"
|
||
|
|
PORTS=(514 8189)
|
||
|
|
|
||
|
|
echo "停止 ${APP_NAME}..."
|
||
|
|
|
||
|
|
# 1. 通过 PID 文件停止
|
||
|
|
if [ -f "$PID_FILE" ]; then
|
||
|
|
PID=$(cat $PID_FILE)
|
||
|
|
if kill -0 $PID 2>/dev/null; then
|
||
|
|
echo "停止进程 $PID..."
|
||
|
|
kill -15 $PID
|
||
|
|
sleep 3
|
||
|
|
|
||
|
|
if kill -0 $PID 2>/dev/null; then
|
||
|
|
echo "强制停止..."
|
||
|
|
kill -9 $PID
|
||
|
|
fi
|
||
|
|
fi
|
||
|
|
rm -f $PID_FILE
|
||
|
|
fi
|
||
|
|
|
||
|
|
# 2. 停止所有监听端口的 Java 进程
|
||
|
|
for port in ${PORTS[@]}; do
|
||
|
|
PIDS=$(lsof -ti:$port 2>/dev/null)
|
||
|
|
if [ ! -z "$PIDS" ]; then
|
||
|
|
for pid in $PIDS; do
|
||
|
|
if ps -p $pid | grep -q "java"; then
|
||
|
|
echo "停止监听端口 $port 的进程 $pid..."
|
||
|
|
kill -9 $pid 2>/dev/null
|
||
|
|
fi
|
||
|
|
done
|
||
|
|
fi
|
||
|
|
done
|
||
|
|
|
||
|
|
# 3. 停止所有包含应用名的进程
|
||
|
|
pkill -f "java.*syslog-serve" 2>/dev/null
|
||
|
|
|
||
|
|
echo "停止完成"
|