155 lines
4.9 KiB
Bash
155 lines
4.9 KiB
Bash
#!/bin/bash
|
||
# 3588AdminBackend 状态检查脚本
|
||
|
||
APP_NAME="managerd"
|
||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||
APP_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||
PID_FILE="$APP_DIR/$APP_NAME.pid"
|
||
CONFIG_PATH="$APP_DIR/config/managerd.json"
|
||
LOG_DIR="$APP_DIR/logs"
|
||
BIN_PATH="$APP_DIR/bin/$APP_NAME"
|
||
|
||
echo "========== 3588AdminBackend 状态 =========="
|
||
echo ""
|
||
echo "基本信息:"
|
||
echo " 应用目录: $APP_DIR"
|
||
echo " 二进制文件: $BIN_PATH"
|
||
echo " 配置文件: $CONFIG_PATH"
|
||
echo " 日志目录: $LOG_DIR"
|
||
|
||
# 检查二进制文件
|
||
if [ -f "$BIN_PATH" ]; then
|
||
echo " 二进制状态: ✅ 存在"
|
||
# 显示版本信息(如果程序支持)
|
||
VERSION=$($BIN_PATH -version 2>/dev/null || echo "")
|
||
if [ -n "$VERSION" ]; then
|
||
echo " 版本: $VERSION"
|
||
fi
|
||
else
|
||
echo " 二进制状态: ❌ 不存在"
|
||
fi
|
||
|
||
# 检查配置文件
|
||
if [ -f "$CONFIG_PATH" ]; then
|
||
echo " 配置文件: ✅ 存在"
|
||
# 显示关键配置
|
||
if command -v python3 &> /dev/null; then
|
||
LISTEN=$(python3 -c "import json; print(json.load(open('$CONFIG_PATH')).get('listen', 'N/A'))" 2>/dev/null)
|
||
DISCOVERY_PORT=$(python3 -c "import json; print(json.load(open('$CONFIG_PATH')).get('discovery_port', 'N/A'))" 2>/dev/null)
|
||
echo " 监听地址: $LISTEN"
|
||
echo " 发现端口: $DISCOVERY_PORT (UDP)"
|
||
fi
|
||
else
|
||
echo " 配置文件: ❌ 不存在"
|
||
fi
|
||
|
||
echo ""
|
||
echo "运行状态:"
|
||
|
||
# 检查进程
|
||
if [ -f "$PID_FILE" ]; then
|
||
PID=$(cat "$PID_FILE")
|
||
if ps -p "$PID" > /dev/null 2>&1; then
|
||
echo " 进程状态: 🟢 运行中"
|
||
echo " PID: $PID"
|
||
|
||
# 获取进程详细信息
|
||
if command -v ps &> /dev/null; then
|
||
echo ""
|
||
echo "进程详情:"
|
||
ps -p "$PID" -o pid,ppid,pcpu,pmem,rss,vsz,etime,cmd --headers 2>/dev/null | while read line; do
|
||
echo " $line"
|
||
done
|
||
fi
|
||
|
||
# 检查端口监听
|
||
echo ""
|
||
echo "网络监听:"
|
||
if command -v ss &> /dev/null; then
|
||
LISTENERS=$(ss -tlnp | grep "$PID" || true)
|
||
if [ -n "$LISTENERS" ]; then
|
||
echo "$LISTENERS" | while read line; do
|
||
echo " TCP: $line"
|
||
done
|
||
fi
|
||
UDP_LISTENERS=$(ss -ulnp | grep "$PID" || true)
|
||
if [ -n "$UDP_LISTENERS" ]; then
|
||
echo "$UDP_LISTENERS" | while read line; do
|
||
echo " UDP: $line"
|
||
done
|
||
fi
|
||
elif command -v netstat &> /dev/null; then
|
||
LISTENERS=$(netstat -tlnp 2>/dev/null | grep "$PID/" || true)
|
||
if [ -n "$LISTENERS" ]; then
|
||
echo "$LISTENERS" | while read line; do
|
||
echo " $line"
|
||
done
|
||
fi
|
||
fi
|
||
|
||
# 测试 API
|
||
echo ""
|
||
echo "API 测试:"
|
||
if command -v curl &> /dev/null; then
|
||
# 从配置文件中获取监听地址
|
||
if [ -f "$CONFIG_PATH" ]; then
|
||
API_URL="http://127.0.0.1:18080/api/devices"
|
||
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" "$API_URL" 2>/dev/null || echo "000")
|
||
if [ "$HTTP_CODE" = "200" ] || [ "$HTTP_CODE" = "401" ]; then
|
||
echo " ✅ HTTP API 响应正常 (HTTP $HTTP_CODE)"
|
||
elif [ "$HTTP_CODE" = "000" ]; then
|
||
echo " ⚠️ 无法连接 HTTP API"
|
||
else
|
||
echo " ℹ️ HTTP API 响应: $HTTP_CODE"
|
||
fi
|
||
fi
|
||
fi
|
||
|
||
else
|
||
echo " 进程状态: 🔴 未运行 (PID 文件存在但进程不存在)"
|
||
echo " 建议: 删除过期的 PID 文件"
|
||
fi
|
||
else
|
||
# 尝试直接查找进程
|
||
PID=$(pgrep -f "^$BIN_PATH" | head -1)
|
||
if [ -n "$PID" ]; then
|
||
echo " 进程状态: 🟡 运行中 (无 PID 文件,PID: $PID)"
|
||
echo " 建议: 重新创建 PID 文件: echo $PID > $PID_FILE"
|
||
else
|
||
echo " 进程状态: ⚫ 未运行"
|
||
fi
|
||
fi
|
||
|
||
# 日志信息
|
||
echo ""
|
||
echo "日志信息:"
|
||
if [ -d "$LOG_DIR" ]; then
|
||
LOG_FILES=$(ls -1 "$LOG_DIR"/*.log 2>/dev/null | head -5)
|
||
if [ -n "$LOG_FILES" ]; then
|
||
echo " 日志文件:"
|
||
ls -lh "$LOG_DIR"/*.log 2>/dev/null | tail -5 | while read line; do
|
||
echo " $line"
|
||
done
|
||
|
||
# 显示最后几行日志
|
||
NEWEST_LOG=$(ls -t "$LOG_DIR"/*.log 2>/dev/null | head -1)
|
||
if [ -n "$NEWEST_LOG" ]; then
|
||
echo ""
|
||
echo " 最新日志 ($NEWEST_LOG):"
|
||
tail -n 3 "$NEWEST_LOG" | while read line; do
|
||
echo " $line"
|
||
done
|
||
fi
|
||
else
|
||
echo " 无日志文件"
|
||
fi
|
||
else
|
||
echo " 日志目录不存在"
|
||
fi
|
||
|
||
echo ""
|
||
echo "========== 操作命令 =========="
|
||
echo " 启动: $SCRIPT_DIR/start.sh"
|
||
echo " 停止: $SCRIPT_DIR/stop.sh"
|
||
echo " 查看日志: tail -f $LOG_DIR/$APP_NAME.log"
|