jshells/test_status.sh

81 lines
4.0 KiB
Bash

#!/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"