Étant donné un PC de base, nous aimerions l'utiliser pour exécuter certaines tâches en arrière-plan 24h / 24.
Fondamentalement, nous aimerions avoir des commandes comme:
add-task *insert command here*
list-tasks
remove-task(s)
Les tâches ajoutées doivent simplement être placées dans une file d'attente et exécutées l'une après l'autre en arrière-plan (en continuant à fonctionner après la déconnexion du shell).
Y a-t-il un script / programme simple qui fait cela?
process
process-management
scheduling
dagnelies
la source
la source
batch
commande "ne fait aucune parallélisation". Il y a généralement un délai par défaut de 60 secondes entre le démarrage d'un travail et le démarrage du suivant; cependant, rien ne fait attendre le prochain travail que le premier se termine - ilatd
lancera volontiers les travaux de la file d'attente par lots dès que la valeur définie par l'-b
option sera écoulée (voir laatd
page de manuel).Une autre solution consiste à utiliser
lpd
et à créer un "pilote d'impression" personnalisé qui exécute vos travaux. Un ami m'a aidé à résoudre ce problème lorsque j'ai eu une demande similaire. Faites un script comme celui-ci et mettez-le/tmp/batch.sh
:Exécutez ensuite:
Cela démarre une file d'attente et vous pouvez en créer d'autres en utilisant d'autres noms au lieu de batch1. Ajoutez un emploi avec:
Gérer les emplois avec
lpq
,lprm
etlpstat
. Si vous voulez plus de flexibilité en passant des arguments à vos jobs, vous pouvez rendre le script batch.sh plus sophistiqué.(J'ai essayé
batch
avant de suivre cette voie, mais soit cela ne fonctionne pas comme une file d'attente sur OSX, soit je l'utilisais mal.)la source
batch
.Il existe de nombreux systèmes de files d'attente, mais ils sont souvent très spécialisés.
Vous pourriez regarder dans le
at
planificateur. C'est commecron
à certains égards, mais il est configuré plus comme une file d'attente pour des travaux ponctuels que pour des travaux répétés. Il peut "planifier" des choses sur des critères autres que le temps, tels que la charge du système ou la séquence des travaux.Votre distribution préférée aura presque certainement des packages pour cela.
la source
Je remarque que cette question a plusieurs années, donc cela peut ne pas aider l'affiche originale, mais cela peut aider quelqu'un d'autre.
Premièrement: "spouleur de tâches" est la réponse. C'est assez puissant et Fedora l'a au moins.
Mais beaucoup de serveurs que j'utilise, je ne peux pas installer de paquets arbitraires sans trop de tracas, j'ai donc besoin de quelque chose qui est idéalement pur bash (ou perl, ou autre).
Après avoir lutté avec cela pendant un certain temps, j'ai trouvé une implémentation pure bash qui semble fonctionner correctement jusqu'à présent. Vous pouvez le trouver sur https://github.com/sitaramc/bq .
Ce n'est qu'un script bash, donc l'installation est triviale. Cependant, cela punit vos deuxième et troisième exigences (mais il devrait être trivial de les implémenter également).
Le script est largement commenté et vous devriez pouvoir le revoir en quelques minutes si vous le souhaitez.
la source