diff --git a/scripts/status.sh b/scripts/status.sh index 36db030..a2a2547 100755 --- a/scripts/status.sh +++ b/scripts/status.sh @@ -39,11 +39,20 @@ fi # ── PM2 状态 ── echo "" if pm2 describe "$PM2_NAME" >/dev/null 2>&1; then - PM2_DESC=$(pm2 describe "$PM2_NAME" 2>/dev/null) - STATUS=$(echo "$PM2_DESC" | grep "status" | head -1 | perl -pe 's/.*?\s+(\S+)\s*$/\1/') - PID=$(echo "$PM2_DESC" | grep -E "pid " | head -1 | perl -pe 's/.*?\s+(\d+)\s*$/\1/') - UPTIME=$(echo "$PM2_DESC" | grep "uptime" | head -1 | perl -pe 's/^.*\x{2502}\s*//; s/\s*$//') - RESTARTS=$(echo "$PM2_DESC" | grep "restarts" | head -1 | perl -pe 's/^.*\x{2502}\s*//; s/\s*$//') + PM2_INFO=$(pm2 jlist 2>/dev/null | python3 -c " +import sys, json +for p in json.load(sys.stdin): + if p['name'] == '$PM2_NAME': + s = p['pm2_env']['status'] + pid = p.get('pid', '?') + r = p['pm2_env'].get('restart_time', 0) + m = round(p['monit']['memory'] / 1024 / 1024, 1) + c = p['monit']['cpu'] + u = p['pm2_env'].get('pm_uptime', 0) + print(f'{s}|{pid}|{r}|{m}|{c}|{u}') + break +" 2>/dev/null || echo "offline|?|0|?|?|0") + IFS='|' read -r STATUS PID RESTARTS MEM CPU UPTIME_MS <<< "$PM2_INFO" if [ "$STATUS" = "online" ]; then echo " PM2: online ✅" @@ -51,20 +60,7 @@ if pm2 describe "$PM2_NAME" >/dev/null 2>&1; then echo " PM2: $STATUS ❌" fi echo " PID: ${PID:-?}" - echo " Uptime: ${UPTIME:-?}" echo " Restarts: ${RESTARTS:-0}" - - # Memory/CPU from pm2 list - PM2_MEM_CPU=$(pm2 jlist 2>/dev/null | python3 -c " -import sys, json -for p in json.load(sys.stdin): - if p['name'] == '$PM2_NAME': - m = round(p['monit']['memory'] / 1024 / 1024, 1) - c = p['monit']['cpu'] - print(f'{m}|{c}') - break -" 2>/dev/null || echo "?|?") - IFS='|' read -r MEM CPU <<< "$PM2_MEM_CPU" echo " Memory: ${MEM}MB" echo " CPU: ${CPU}%" else