#!/bin/bash # 服务启动失败诊断脚本 echo "================================================================" echo " 守护进程服务诊断工具" echo "================================================================" echo "" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" echo "[1] 检查服务状态" echo "----------------------------------------------------------------" systemctl status bjh_daemon --no-pager echo "" echo "[2] 查看服务错误日志(最近50行)" echo "----------------------------------------------------------------" journalctl -u bjh_daemon -n 50 --no-pager echo "" echo "[3] 检查Python环境" echo "----------------------------------------------------------------" echo "Python路径: $(which python3)" python3 --version echo "" echo "[4] 检查守护进程脚本" echo "----------------------------------------------------------------" if [ -f "$SCRIPT_DIR/data_sync_daemon.py" ]; then echo "[✓] 脚本存在: $SCRIPT_DIR/data_sync_daemon.py" ls -lh "$SCRIPT_DIR/data_sync_daemon.py" else echo "[X] 脚本不存在: $SCRIPT_DIR/data_sync_daemon.py" fi echo "" echo "[5] 检查Python依赖" echo "----------------------------------------------------------------" echo "正在检查requirements.txt中的依赖..." if [ -f "$SCRIPT_DIR/requirements.txt" ]; then while IFS= read -r package || [ -n "$package" ]; do # 跳过空行和注释 [[ -z "$package" || "$package" =~ ^# ]] && continue # 提取包名(忽略版本号) pkg_name=$(echo "$package" | cut -d'=' -f1 | cut -d'>' -f1 | cut -d'<' -f1 | tr -d ' ') if python3 -c "import $pkg_name" 2>/dev/null; then echo "[✓] $pkg_name" else echo "[X] $pkg_name 未安装" fi done < "$SCRIPT_DIR/requirements.txt" else echo "[!] requirements.txt 不存在" fi echo "" echo "[6] 尝试手动运行守护进程(按Ctrl+C停止)" echo "----------------------------------------------------------------" echo "命令: cd $SCRIPT_DIR && python3 data_sync_daemon.py" echo "" read -p "是否现在运行测试?(y/n): " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then cd "$SCRIPT_DIR" python3 data_sync_daemon.py fi