forked from DjangoPeng/GitHubSentinel
-
Notifications
You must be signed in to change notification settings - Fork 0
/
daemon_control.sh
executable file
·75 lines (70 loc) · 1.76 KB
/
daemon_control.sh
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/bin/bash
# 守护进程控制脚本
# 定义守护进程 Python 脚本的路径
DAEMON_PATH="./src/daemon_process.py"
# 定义守护进程的名称
DAEMON_NAME="DaemonProcess"
# 定义日志文件的路径
LOG_FILE="./logs/$DAEMON_NAME.log"
# 定义守护进程的 PID 文件路径,用于存储进程号
PID_FILE="./run/$DAEMON_NAME.pid"
# 启动守护进程的函数
start() {
echo "Starting $DAEMON_NAME..."
# 使用 nohup 命令在后台运行 Python 脚本,并将输出重定向到日志文件
nohup python3 $DAEMON_PATH > $LOG_FILE 2>&1 &
# 将守护进程的 PID 写入文件
echo $! > $PID_FILE
echo "$DAEMON_NAME started."
}
# 停止守护进程的函数
stop() {
if [ -f $PID_FILE ]; then
# 如果 PID 文件存在,读取 PID
PID=$(cat $PID_FILE)
echo "Stopping $DAEMON_NAME..."
# 使用 kill 命令停止进程
kill $PID
echo "$DAEMON_NAME stopped."
# 删除 PID 文件
rm $PID_FILE
else
echo "$DAEMON_NAME is not running."
fi
}
# 检查守护进程状态的函数
status() {
if [ -f $PID_FILE ]; then
PID=$(cat $PID_FILE)
# 检查进程是否在运行
if ps -p $PID > /dev/null
then
echo "$DAEMON_NAME is running."
else
echo "$DAEMON_NAME is not running."
fi
else
echo "$DAEMON_NAME is not running."
fi
}
# 根据输入参数选择执行哪个函数
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
# 重启守护进程
stop
start
;;
*)
# 如果参数不符合预期,显示用法
echo "Usage: $0 {start|stop|status|restart}"
exit 1
esac