92 lines
2.2 KiB
Bash
92 lines
2.2 KiB
Bash
#!/usr/bin/env bash
|
||
# OCR Worker 一键诊断
|
||
set -uo pipefail
|
||
|
||
ROOT="$(cd "$(dirname "$0")" && pwd)"
|
||
PORT="${OCR_PORT:-23567}"
|
||
VENV="${ROOT}/.venv"
|
||
|
||
echo "========== OCR Worker 诊断 =========="
|
||
echo "目录: ${ROOT}"
|
||
echo "端口: ${PORT}"
|
||
echo ""
|
||
|
||
echo "--- 1. 虚拟环境 ---"
|
||
if [[ -d "${VENV}" ]]; then
|
||
echo "OK .venv 存在"
|
||
else
|
||
echo "FAIL 未安装,请运行: bash install.sh"
|
||
fi
|
||
|
||
echo ""
|
||
echo "--- 2. 端口监听 ---"
|
||
if command -v ss >/dev/null; then
|
||
if ss -tln | grep -q ":${PORT} "; then
|
||
echo "OK 端口 ${PORT} 正在监听"
|
||
ss -tlnp | grep ":${PORT} " || true
|
||
else
|
||
echo "FAIL 端口 ${PORT} 无服务 — 请先启动:"
|
||
echo " OCR_USE_GPU=true bash start.sh"
|
||
echo " 或: sudo bash install-service.sh"
|
||
fi
|
||
else
|
||
netstat -tln 2>/dev/null | grep ":${PORT} " || echo "FAIL 端口 ${PORT} 无服务"
|
||
fi
|
||
|
||
echo ""
|
||
echo "--- 3. HTTP 健康检查 ---"
|
||
if command -v curl >/dev/null; then
|
||
resp="$(curl -sS -m 3 "http://127.0.0.1:${PORT}/health" 2>&1)" || true
|
||
if [[ -n "${resp}" ]]; then
|
||
echo "OK ${resp}"
|
||
else
|
||
echo "FAIL curl 无响应(服务未启动或启动失败)"
|
||
fi
|
||
else
|
||
echo "跳过(无 curl)"
|
||
fi
|
||
|
||
echo ""
|
||
echo "--- 4. GPU ---"
|
||
if command -v nvidia-smi >/dev/null; then
|
||
nvidia-smi --query-gpu=name,memory.used,memory.total --format=csv,noheader
|
||
else
|
||
echo "未检测到 nvidia-smi"
|
||
fi
|
||
|
||
echo ""
|
||
echo "--- 5. Python 依赖 ---"
|
||
if [[ -d "${VENV}" ]]; then
|
||
# shellcheck disable=SC1091
|
||
source "${VENV}/bin/activate"
|
||
python3 - <<'PY' || true
|
||
try:
|
||
import paddle
|
||
print("OK paddle", paddle.__version__)
|
||
except Exception as e:
|
||
print("FAIL paddle:", e)
|
||
try:
|
||
import paddleocr
|
||
print("OK paddleocr")
|
||
except Exception as e:
|
||
print("FAIL paddleocr:", e)
|
||
try:
|
||
import fastapi, uvicorn
|
||
print("OK fastapi/uvicorn")
|
||
except Exception as e:
|
||
print("FAIL fastapi:", e)
|
||
PY
|
||
fi
|
||
|
||
echo ""
|
||
echo "--- 6. systemd ---"
|
||
if systemctl is-active ocr-worker &>/dev/null; then
|
||
systemctl status ocr-worker --no-pager -l | head -15
|
||
elif [[ -f /etc/systemd/system/ocr-worker.service ]]; then
|
||
echo "服务已安装但未运行: sudo systemctl start ocr-worker"
|
||
else
|
||
echo "未安装 systemd 服务(可选): sudo bash install-service.sh"
|
||
fi
|
||
|
||
echo "===================================="
|