#!/bin/bash # scripts/stop_workers.sh # Detener todos los workers de traducción echo "Deteniendo workers de traducción..." # Buscar y matar el proceso del pool POOL_PID=$(ps aux | grep "[s]tart_worker_pool.php" | awk '{print $2}') if [ -n "$POOL_PID" ]; then echo "Deteniendo pool (PID: $POOL_PID)..." kill -TERM $POOL_PID sleep 2 # Verificar si terminó if ps -p $POOL_PID > /dev/null 2>&1; then echo "Pool no respondió a SIGTERM, enviando SIGKILL..." kill -9 $POOL_PID fi echo "✓ Pool detenido" else echo "No se encontró pool activo" fi # Verificar workers huérfanos ORPHAN_WORKERS=$(ps aux | grep "[T]ranslationWorker" | awk '{print $2}') if [ -n "$ORPHAN_WORKERS" ]; then echo "Deteniendo workers huérfanos..." echo "$ORPHAN_WORKERS" | xargs kill -TERM sleep 1 echo "✓ Workers huérfanos detenidos" fi # Verificar que no queden procesos REMAINING=$(ps aux | grep -c "[T]ranslation") if [ $REMAINING -eq 0 ]; then echo "✓ Todos los workers detenidos correctamente" exit 0 else echo "⚠ Advertencia: Aún hay $REMAINING procesos de traducción activos" ps aux | grep "[T]ranslation" exit 1 fi