#!/bin/bash # Inicia/detiene el monitor de locuciones (gr-locutor) # Uso: start-monitor.sh [start|stop|status] SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" PIDFILE="$HOME/.gradio/data/tmp/pids/locuciones-monitor.pid" MONITOR="$SCRIPT_DIR/monitor-locuciones.py" LOCUTOR_VENV="$HOME/.gradio/locutor-venv" case "${1:-start}" in start) if [ -f "$PIDFILE" ]; then pid=$(cat "$PIDFILE" 2>/dev/null) if kill -0 "$pid" 2>/dev/null; then echo "Monitor ya está corriendo (PID $pid)" exit 0 fi rm -f "$PIDFILE" fi mkdir -p "$(dirname "$PIDFILE")" # shellcheck source=/dev/null source "$LOCUTOR_VENV/bin/activate" nohup python3 "$MONITOR" > "$HOME/.gradio/data/tmp/locuciones-monitor.log" 2>&1 & echo $! > "$PIDFILE" echo "Monitor de locuciones iniciado (PID $!)" ;; stop) if [ -f "$PIDFILE" ]; then pid=$(cat "$PIDFILE" 2>/dev/null) kill "$pid" 2>/dev/null && echo "Monitor detenido" || echo "No se pudo detener" rm -f "$PIDFILE" else pkill -f "monitor-locuciones.py" 2>/dev/null && echo "Monitor detenido" || echo "Monitor no estaba corriendo" fi ;; status) if [ -f "$PIDFILE" ]; then pid=$(cat "$PIDFILE" 2>/dev/null) if kill -0 "$pid" 2>/dev/null; then echo "Monitor ACTIVO (PID $pid)" tail -3 "$HOME/.gradio/data/tmp/locuciones-monitor.log" 2>/dev/null else echo "Monitor INACTIVO (PID file obsoleto)" rm -f "$PIDFILE" fi else echo "Monitor INACTIVO" fi ;; *) echo "Uso: $0 [start|stop|status]" exit 1 ;; esac