20 puntos por xguru 2025-11-11 | 2 comentarios | Compartir por WhatsApp
  • Utilidad para implementar un sistema ligero de cola de trabajos que funciona sin configuración ni daemon separados
  • Compatible con Linux/macOS; puede ejecutarse en sistemas compatibles con POSIX con soporte para flock(2)
  • Soporta encolado ad-hoc de tareas basado en línea de comandos
    • Adecuado para tareas secuenciales como compilaciones con Makefile, descarga de archivos y ejecución de benchmarks
    • También puede usarse como reemplazo de nohup
  • El orden de los trabajos se garantiza estrictamente mediante sincronización basada en marcas de tiempo a nivel de ms
    • Crea TIMESTAMP.PID para cada proceso y aplica flock (bloqueo de archivo)
    • Cuando los flock anteriores se desbloquean, inicia el siguiente job
    • Como la sincronización se realiza a nivel de sistema de archivos, no se necesita polling
  • Si agregas una tarea con la forma nq CMDLINE..., muestra el ID del trabajo y la ejecuta en segundo plano
    • STDOUT/STDERR se redirigen a un archivo de log
    • El bit de ejecución (+x) del archivo de log permite distinguir visualmente el estado del trabajo
  • La extensión del nombre del archivo de log está compuesta por el PID, lo que facilita la administración de trabajos
    • Antes de ejecutarse usa el PID de nq, y después cambia al PID real del trabajo
    • Puedes ejecutar el archivo de log como si fuera un script de shell para repetir el trabajo

Diferencias frente a at, batch y task-spooler

  • at
    Herramienta para ejecutar trabajos en una hora especificada
    Ejecuta comandos en el momento programado según el reloj del sistema y se usa sobre todo para tareas programadas de una sola vez
  • batch
    Ejecuta trabajos cuando la carga del sistema (load average) es baja
    Su objetivo es el control de ejecución según la carga más que la programación, y es gestionado por un daemon
  • task-spooler
    Inicia automáticamente un daemon para gestionar la cola y soporta procesamiento secuencial o en paralelo
    Permite especificar la cantidad máxima de trabajos que pueden ejecutarse al mismo tiempo
    Se pueden configurar colas distintas por terminal, y el estado de cada cola puede consultarse con comandos
  • nq
    Funciona sin daemon y gestiona la cola simplemente con flock (bloqueo del sistema de archivos) a nivel de directorio
    No considera la carga del sistema ni horarios programados; solo garantiza el orden de los trabajos
    Los logs de la cola pueden verse en tiempo real con nqtail
    Como cada directorio actúa como una cola independiente, se pueden separar varias colas usando la variable de entorno $NQDIR

2 comentarios

 
rtyu1120 2025-11-11

El estilo del código es tan viejo, tan estilo Sourceforge, que pensé que había viajado al pasado jajaja

 
euphcat 2025-11-11

Comparado con la época de Sourceforge, sería un desarrollador muy novato, pero al principio pensé: “¿de qué está hablando?”, y luego vi el salto de línea entre el tipo de retorno de la función y el nombre, y lo entendí de inmediato o.o

¿Será que en ese código también se notan otros estilos de programación antiguos?