54 lines
1.2 KiB
Bash
54 lines
1.2 KiB
Bash
#!/bin/bash
|
|||
|
|
# 通用爬虫系统 - 启动/停止脚本 (PID 文件管理)
|
||
|
|
cd "$(dirname "$0")"
|
||
|
|
PY=/home/hz1/miniconda3/envs/openclaw/bin/python
|
||
|
|
PORT=${CRAWLER_PORT:-16062}
|
||
|
|
PIDFILE=logs/app.pid
|
||
|
|
|
||
|
|
get_pid() {
|
||
|
|
if [ -f "$PIDFILE" ]; then
|
||
|
|
cat "$PIDFILE" 2>/dev/null
|
||
|
|
fi
|
||
|
|
}
|
||
|
|
|
||
|
|
is_running() {
|
||
|
|
local pid=$(get_pid)
|
||
|
|
[ -n "$pid" ] && kill -0 "$pid" 2>/dev/null
|
||
|
|
}
|
||
|
|
|
||
|
|
case "$1" in
|
||
|
|
stop)
|
||
|
|
if is_running; then
|
||
|
|
kill $(get_pid) && rm -f "$PIDFILE" && echo "已停止"
|
||
|
|
else
|
||
|
|
rm -f "$PIDFILE"; echo "未在运行"
|
||
|
|
fi
|
||
|
|
;;
|
||
|
|
restart)
|
||
|
|
if is_running; then kill $(get_pid); sleep 1; fi
|
||
|
|
rm -f "$PIDFILE"
|
||
|
|
mkdir -p logs
|
||
|
|
nohup $PY app.py > logs/app.log 2>&1 &
|
||
|
|
echo $! > "$PIDFILE"
|
||
|
|
sleep 1
|
||
|
|
echo "已重启, PID $(get_pid) (端口 $PORT)"
|
||
|
|
;;
|
||
|
|
status)
|
||
|
|
if is_running; then
|
||
|
|
echo "运行中, PID $(get_pid) (端口 $PORT)"
|
||
|
|
else
|
||
|
|
echo "未运行"
|
||
|
|
fi
|
||
|
|
;;
|
||
|
|
*)
|
||
|
|
if is_running; then
|
||
|
|
echo "已在运行, PID $(get_pid) (端口 $PORT)"; exit 0
|
||
|
|
fi
|
||
|
|
mkdir -p logs
|
||
|
|
nohup $PY app.py > logs/app.log 2>&1 &
|
||
|
|
echo $! > "$PIDFILE"
|
||
|
|
sleep 1
|
||
|
|
echo "已启动, PID $(get_pid) (端口 $PORT)"
|
||
|
|
echo "管理界面: http://$(hostname -I | awk '{print $1}'):$PORT/"
|
||
|
|
;;
|
||
|
|
esac
|