예제 소스
오목 Next.js 웹과 VLM 착수 API 연결하기 · 파일 59개
start_omook_watchdog.sh
#!/usr/bin/env bash
# Omook 스택 워치독을 nohup 으로 기동 (Next:3002 + VLM:9299)
# launchd 가 필요하면: bash scripts/install_omook_launchd.sh
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
PY="$ROOT/.venv/bin/python"
OUT="$ROOT/logs/omook_stack_watch"
PIDFILE="$OUT/watchdog.pid"
LOG="$OUT/watchdog.nohup.log"
if [[ ! -x "$PY" ]]; then
echo "venv python not found: $PY" >&2
exit 1
fi
mkdir -p "$OUT"
# 잔존/중복 워치독 정리 후 1개만 기동 (구형 TCP 프로브 프로세스 포함)
if pgrep -f 'daemon_omook_stack_watchdog.py' >/dev/null 2>&1; then
echo "stopping existing omook watchdog(s): $(pgrep -f 'daemon_omook_stack_watchdog.py' | tr '\n' ' ')"
pkill -f 'daemon_omook_stack_watchdog.py' 2>/dev/null || true
sleep 2
fi
rm -f "$PIDFILE"
cd "$ROOT"
export PYTHONUNBUFFERED=1
export TOKENIZERS_PARALLELISM=false
export PORT=3002
export OMOOK_VLM_DEVICE="${OMOOK_VLM_DEVICE:-mps}"
export PATH="$HOME/.nvm/versions/node/v24.14.1/bin:/opt/homebrew/bin:/usr/local/bin:$PATH"
nohup "$PY" scripts/daemon_omook_stack_watchdog.py >>"$LOG" 2>&1 &
echo $! >"$PIDFILE"
echo "started watchdog pid=$(cat "$PIDFILE")"
echo "HEARTBEAT: $OUT/HEARTBEAT.md"
echo "LOG: $OUT/watchdog.log"
sleep 3
lsof -nP -iTCP:3002,9299 -sTCP:LISTEN 2>/dev/null || true