Dada una PC básica, nos gustaría usarla para ejecutar algunas tareas en segundo plano las 24 horas.
Básicamente, nos gustaría tener comandos como:
add-task *insert command here*
list-tasks
remove-task(s)
Las tareas agregadas simplemente deben colocarse en una cola y ejecutarse una tras otra en segundo plano (seguir ejecutándose después de cerrar la sesión del shell).
¿Hay algún script / programa simple que haga esto?
process
process-management
scheduling
dagnelies
fuente
fuente
batch
comando "no hace ninguna paralelización". Por lo general, hay un retraso predeterminado de 60 segundos entre comenzar un trabajo y comenzar el siguiente; sin embargo, no hay nada que haga que el próximo trabajo espere a que termine el primero;atd
felizmente comenzará los trabajos de la cola de lotes tan pronto como-b
haya transcurrido el valor establecido por la opción (consulte laatd
página del manual).Otra solución es usar
lpd
y crear un "controlador de impresión" personalizado que ejecute sus trabajos. Un amigo me ayudó a resolver esto cuando tuve una solicitud similar. Haga un guión como este y póngalo en/tmp/batch.sh
:Entonces corre:
Eso inicia una cola y puede crear más utilizando otros nombres en lugar de batch1. Agregar un trabajo con:
Administrar los trabajos con
lpq
,lprm
ylpstat
. Si desea más flexibilidad para pasar argumentos a sus trabajos, puede hacer que el script batch.sh sea más elegante.(Lo intenté
batch
antes de seguir esta ruta, pero o no funciona como una cola en OSX, o lo estaba usando mal).fuente
batch
.Hay muchos sistemas de colas, pero a menudo son muy especializados.
Puede consultar el
at
planificador. Es comocron
en algunos aspectos, pero se configura más como una cola para trabajos únicos que para trabajos repetidos. Puede "programar" cosas en criterios distintos al tiempo, como la carga del sistema o la secuencia de trabajos.Su distribución favorita seguramente tendrá paquetes para ella.
fuente
Noté que esta pregunta tiene varios años, por lo que puede que no sirva para el póster original, pero puede ayudar a alguien más.
Primero: "spooler de tareas" es la respuesta. Es bastante poderoso y Fedora al menos lo tiene.
Pero muchos de los servidores que uso, no puedo instalar paquetes arbitrarios sin mucha molestia, por lo que necesito algo que sea idealmente puro bash (o perl, o tal).
Después de luchar con esto por un tiempo, se me ocurrió una implementación de bash puro que parece funcionar bien hasta ahora. Puede encontrarlo en https://github.com/sitaramc/bq .
Es solo un script bash, por lo que la instalación es trivial. Sin embargo, supera sus requisitos segundo y tercero (pero también debería ser trivial implementarlos).
El guión se comenta libremente y, si lo desea, debería poder revisarlo en unos minutos.
fuente