Hoy, me topé con una utilidad de línea de comandos de Linux llamada "Task Spooler" . Como su nombre lo dice, Task spooler es un sistema por lotes de Unix que se puede usar para agregar los comandos de Linux a la cola y ejecutarlos uno tras otro en orden numérico (orden ascendente, para ser precisos). No lo confunda con 'at' comando, que se utiliza para ejecutar comandos de Linux en un momento específico. A diferencia de en comando, Task spooler ejecuta un comando inmediatamente desde la cola tan pronto como finaliza el comando anterior.
Esta utilidad puede ser muy útil cuando tiene que ejecutar muchos comandos, pero no quiere perder el tiempo esperando que termine un comando y ejecute el siguiente comando. Puede ponerlos en cola y Task Spooler los ejecutará uno por uno. Mientras tanto, puedes hacer otras actividades. Cada usuario en cada sistema tiene su propia cola de trabajos. También es muy útil cuando sabes que tus comandos dependen de mucha RAM, mucho uso del disco, dan mucho rendimiento, o por cualquier razón es mejor no ejecutarlos al mismo tiempo. En pocas palabras, Task Spooler es un programa de línea de comandos para poner en cola otros comandos para la ejecución por lotes.
Descargar - Libro electrónico gratuito:"Hoja de referencia de la línea de comandos de Linux"En este breve tutorial, déjame mostrarte cómo instalar y usar Task Spooler en sistemas operativos similares a Unix.
Instalar Task Spooler en Debian, Ubuntu, Linux Mint
Task Spooler está disponible en los repositorios predeterminados de Debian, Ubuntu y otros sistemas basados en DEB. Entonces, puedes instalarlo usando el comando:
$ sudo apt-get install task-spooler
Para otros sistemas, puede descargar el archivo fuente de Task Spooler desde este enlace y constrúyalo como un paquete nativo para la distribución de Linux que usa e instálelo como se explica en cualquiera de los siguientes métodos.
- Cómo crear fácilmente paquetes de Linux para múltiples plataformas
- Cómo compilar paquetes desde el origen mediante CheckInstall
Agregue comandos de Linux a la cola y ejecútelos uno por uno usando Task Spooler
Veamos algunos ejemplos prácticos. Todos los ejemplos proporcionados aquí se prueban en el sistema Ubuntu 18.04 LTS.
Ejecute el comando tsp:
$ tsp
En este momento, no hay nada en la cola. Agreguemos algunos comandos a la cola. Para hacerlo, ejecute:
$ tsp echo Welcome OSTechNix
$ tsp echo "Hello World"
Ahora, ejecute el comando tsp nuevamente para ver los comandos en la cola:
$ tsp
Salida de muestra:
ID State Output E-Level Times(r/u/s) Command [run=0/1] 0 finished /tmp/ts-out.jpHIG1 0 0.01/0.00/0.00 echo Welcome OSTechNix 1 finished /tmp/ts-out.8H6LLB 0 0.00/0.00/0.00 echo Hello World
Como puede ver en el resultado anterior, cada comando tiene una ID única en (0, 1, 2... etc.) en orden ascendente. Además, muestra el estado actual de los comandos (por ejemplo, terminados o en ejecución) en la cola. Los comandos de eco son muy simples y breves, por lo que obtuvimos el resultado como 'terminado'.
Ejecutemos un comando que toma más tiempo para terminar. Echa un vistazo al siguiente comando:
$ find / -type f -printf '%T+ %p\n' | sort | head -n 20
Este comando buscará y mostrará los 20 archivos más antiguos en el sistema de archivos raíz (/).
Ahora agregue el comando anterior a la cola:
$ tsp find / -type f -printf '%T+ %p\n' | sort | head -n 20
Salida de muestra:
2
Ahora, ejecute el comando tsp para ver la lista de comandos en la cola.
$ tsp
Salida de muestra:
ID State Output E-Level Times(r/u/s) Command [run=1/1] 2 running /tmp/ts-out.79rMXn find / -type f -printf %T+ %p\n 0 finished /tmp/ts-out.jpHIG1 0 0.01/0.00/0.00 echo Welcome OSTechNix 1 finished /tmp/ts-out.8H6LLB 0 0.00/0.00/0.00 echo Hello World
Agregue comandos de Linux a la cola usando Task Spooler
Como puede ver en el resultado anterior, el comando con ID 2 se está ejecutando. Del mismo modo, puede agregar tantos comandos como desee ejecutar utilizando Task Spooler.
Actualización:
Como uno de nuestros lectores mencionó en la sección de comentarios, el comando de búsqueda debe ejecutarse como se muestra a continuación:
$ tsp sh -c "find Downloads/ -type f -printf '%T+ %p\n' | sort | head -n 20"
Para ver el resultado de un trabajo en ejecución para verificar qué está pasando, ingrese el siguiente comando:
$ tsp -c 2
Aquí, 2 es el ID del comando en ejecución. Presiona CTRL+C para volver a la Terminal. No cancelará el comando en ejecución. Solo te llevará de regreso a la Terminal. El trabajo seguirá ejecutándose en segundo plano.
Puede eliminar un comando (en ejecución, terminado, en cola) de la cola usando -r bandera seguida de la ID como se muestra a continuación.
$ tsp -r 2
El comando anterior eliminará el comando que tiene ID 2 de la cola.
Para borrar todos los comandos de la cola, simplemente ejecute:
$ tsp -C
Tenga en cuenta que aquí C es capital . El comando anterior borrará los últimos comandos completados de la cola. No eliminará ningún comando en ejecución ni los comandos en la cola.
Recuerde, necesita ejecutar Task Spooler en distribuciones que no sean Debian/Ubuntu usando ts comando.
Para obtener más detalles, consulte las páginas man.
$ man ts
O,
$ man tsp
Lectura sugerida:
- Cómo ejecutar un comando durante un tiempo específico en Linux
Conclusión
Lo encuentro Task spooler muy útil cuando tengo que ejecutar varios comandos. Solo soy un tipo perezoso que espera que termine un comando y ejecute el otro. Usando Task Spooler, puse en cola la lista de comandos para ejecutar y ejecutó los comandos de la cola uno por uno en orden ascendente. También puedo ver el resultado de cualquier comando en ejecución usando su ID en cualquier momento. Tenga en cuenta que no ejecutará todos los comandos a la vez. En su lugar, ejecutará los comandos uno tras otro. Dicho esto, Task Spooler es una opción para ejecutar trabajos por lotes.