This commit is contained in:
Leo
2025-12-22 22:56:17 +08:00
parent a2f32dc7c4
commit 7c7076f4ef

View File

@@ -206,17 +206,19 @@ sed -i 's/\r$//' "$SCRIPT_FILE" 2>/dev/null || true
# 检查是否要后台运行
BACKGROUND=false
if [ "$1" = "--background" ] || [ "$1" = "-b" ] || [ "$1" = "--daemon" ] || [ "$1" = "-d" ]; then
BACKGROUND=true
shift # 移除后台运行参数
fi
ARGS=()
for arg in "$@"; do
if [ "$arg" = "--background" ] || [ "$arg" = "-b" ] || [ "$arg" = "--daemon" ] || [ "$arg" = "-d" ]; then
BACKGROUND=true
else
ARGS+=("$arg")
fi
done
# 运行脚本
echo "使用 Python: $PYTHON_CMD"
echo "运行脚本: $SCRIPT_FILE"
echo "脚本大小: $(wc -c < "$SCRIPT_FILE") 字节"
echo "参数: $@"
echo ""
if [ "$BACKGROUND" = "true" ]; then
# 后台运行模式
@@ -227,22 +229,26 @@ if [ "$BACKGROUND" = "true" ]; then
echo "日志文件: $LOG_FILE"
echo "PID 文件: $PID_FILE"
echo ""
echo "使用以下命令管理服务:"
echo " 查看日志: tail -f $LOG_FILE"
echo " 停止服务: kill \$(cat $PID_FILE)"
echo " 查看进程: ps aux | grep fetch_logistics_ubuntu"
echo ""
# 使用 nohup 后台运行
nohup $PYTHON_CMD -u "$SCRIPT_FILE" "$@" > "$LOG_FILE" 2>&1 &
# 使用 nohup 后台运行,确保使用虚拟环境的 Python
# 注意:不传递 --background 参数给 Python 脚本
nohup $PYTHON_CMD -u "$SCRIPT_FILE" "${ARGS[@]}" > "$LOG_FILE" 2>&1 &
PID=$!
echo $PID > "$PID_FILE"
# 等待一下,检查进程是否启动成功
sleep 2
sleep 3
if ps -p $PID > /dev/null 2>&1; then
echo "✅ 服务已启动PID: $PID"
echo "查看日志: tail -f $LOG_FILE"
echo ""
echo "使用以下命令管理服务:"
echo " 查看日志: tail -f $LOG_FILE"
echo " 停止服务: ./manage_service.sh stop"
echo " 查看状态: ./manage_service.sh status"
echo ""
# 后台模式下,不退出虚拟环境(因为后台进程已经独立运行)
# 直接退出脚本
exit 0
else
echo "❌ 服务启动失败,请查看日志: $LOG_FILE"
rm -f "$PID_FILE"
@@ -251,20 +257,18 @@ if [ "$BACKGROUND" = "true" ]; then
fi
else
# 前台运行模式
echo "参数: ${ARGS[@]}"
echo ""
echo "以前台模式启动服务(按 Ctrl+C 停止)..."
echo ""
# 使用 -u 参数确保输出不被缓冲,并明确指定以脚本模式运行
exec $PYTHON_CMD -u "$SCRIPT_FILE" "$@"
# 使用 exec 替换当前进程,这样 deactivate 不会执行
exec $PYTHON_CMD -u "$SCRIPT_FILE" "${ARGS[@]}"
# 如果 exec 失败(不应该发生),才会执行到这里
EXIT_CODE=$?
deactivate
exit $EXIT_CODE
fi
# 保存退出码
EXIT_CODE=$?
# 退出虚拟环境
deactivate
# 返回脚本的退出码
exit $EXIT_CODE
EOF
chmod +x run_logistics.sh
@@ -292,7 +296,22 @@ case "$1" in
rm -f "$PID_FILE"
fi
fi
./run_logistics.sh --background
# 重定向输出,避免显示在终端
./run_logistics.sh --background > /dev/null 2>&1
sleep 2
if [ -f "$PID_FILE" ]; then
PID=$(cat "$PID_FILE")
if ps -p $PID > /dev/null 2>&1; then
echo "✅ 服务已启动PID: $PID"
echo "查看日志: tail -f $LOG_FILE"
else
echo "❌ 服务启动失败,请查看日志: $LOG_FILE"
exit 1
fi
else
echo "❌ 服务启动失败,请查看日志: $LOG_FILE"
exit 1
fi
;;
stop)
echo "停止物流服务..."