- 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
El estilo del código es tan viejo, tan estilo Sourceforge, que pensé que había viajado al pasado jajaja
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?