-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstop.sh
More file actions
executable file
·57 lines (48 loc) · 1.49 KB
/
Copy pathstop.sh
File metadata and controls
executable file
·57 lines (48 loc) · 1.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/bin/bash
# fuckmail 停止脚本
set -e
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
APP_NAME="fuckmail"
BINARY_PATH="${SCRIPT_DIR}/${APP_NAME}"
PID_FILE="/run/fuckmail.pid"
echo "正在停止 fuckmail 邮件服务器..."
if [ "$EUID" -ne 0 ]; then
echo "❌ 错误: 此脚本需要root权限"
echo "请使用: sudo $0"
exit 1
fi
# 优先使用 PID 文件停止进程
if [ -f "$PID_FILE" ]; then
PID="$(cat "$PID_FILE" 2>/dev/null || true)"
if [ -n "$PID" ] && ps -p "$PID" > /dev/null 2>&1; then
echo "找到运行中的进程 (PID: $PID),正在停止..."
kill "$PID" || true
sleep 2
if ps -p "$PID" > /dev/null 2>&1; then
echo "警告: 进程未能正常停止,使用强制终止..."
kill -9 "$PID" || true
sleep 1
fi
fi
rm -f "$PID_FILE"
fi
# 兼容没有 PID 文件的旧启动方式
if pgrep -f "$BINARY_PATH" > /dev/null; then
echo "找到运行中的进程,正在停止..."
pkill -f "$BINARY_PATH"
sleep 2
# 检查是否成功停止
if pgrep -f "$BINARY_PATH" > /dev/null; then
echo "警告: 进程未能正常停止,使用强制终止..."
pkill -9 -f "$BINARY_PATH"
sleep 1
fi
if ! pgrep -f "$BINARY_PATH" > /dev/null; then
echo "✅ fuckmail 已成功停止"
else
echo "❌ 无法停止进程,请手动检查"
exit 1
fi
else
echo "⚠️ 未找到运行中的 fuckmail 进程"
fi