1
This commit is contained in:
@@ -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 "停止物流服务..."
|
||||
|
||||
Reference in New Issue
Block a user