#!/bin/bash # 测试修复后的状态检测功能 echo "=== 测试修复后的状态检测功能 ===" # 测试get_site_status函数 test_get_site_status() { echo "测试 get_site_status 函数..." # 模拟PM2 list输出 echo "模拟PM2 list输出:" echo "┌─────┬────────────────┬──────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐" echo "│ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │" echo "├─────┼────────────────┼──────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤" echo "│ 0 │ jingrow │ default │ 1.0.0 │ fork │ 12345 │ 2D │ 0 │ online │ 0% │ 45.0mb │ jingrow │ disabled │" echo "│ 1 │ testapp │ default │ 1.0.0 │ fork │ 12346 │ 0s │ 0 │ stopped │ 0% │ 0b │ jingrow │ disabled │" echo "│ 2 │ erroredapp │ default │ 1.0.0 │ fork │ 0 │ 0s │ 5 │ errored │ 0% │ 0b │ jingrow │ disabled │" echo "└─────┴────────────────┴──────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘" echo "" echo "状态解析说明:" echo "- jingrow: 状态为 'online' -> 应该返回 'running'" echo "- testapp: 状态为 'stopped' -> 应该返回 'stopped'" echo "- erroredapp: 状态为 'errored' -> 应该返回 'error'" } # 测试端口检测 test_port_detection() { echo "" echo "=== 测试端口检测功能 ===" # 检查常用端口 local ports=(3001 3002 8080 80 443) for port in "${ports[@]}"; do echo "检查端口 $port:" if netstat -tlnp 2>/dev/null | grep -q ":$port "; then echo " ✓ 端口 $port 正在监听 (netstat)" elif ss -tlnp 2>/dev/null | grep -q ":$port "; then echo " ✓ 端口 $port 正在监听 (ss)" else echo " ✗ 端口 $port 未被监听" fi done } # 测试PM2命令可用性 test_pm2_availability() { echo "" echo "=== 测试PM2命令可用性 ===" # 检查jingrow用户的PM2 echo "检查jingrow用户的PM2:" if su - jingrow -c "command -v pm2" 2>/dev/null; then echo " ✓ PM2命令可用" # 检查PM2版本 local pm2_version=$(su - jingrow -c "pm2 -v" 2>/dev/null) if [ -n "$pm2_version" ]; then echo " ✓ PM2版本: $pm2_version" else echo " ✗ 无法获取PM2版本" fi # 检查PM2进程列表 echo " PM2进程列表:" su - jingrow -c "pm2 list" 2>/dev/null || echo " ✗ 无法获取PM2进程列表" else echo " ✗ PM2命令不可用" fi } # 运行测试 test_get_site_status test_port_detection test_pm2_availability echo "" echo "=== 测试完成 ===" echo "现在可以运行修复后的脚本:" echo " /tmp/jsite.sh --mode status --site-name jingrow"