Pueue est un outil de gestion des tâches en ligne de commande pour l'exécution séquentielle et parallèle des tâches de longue durée.
En termes simples, c'est un outil qui réjouit aq ueue de commandes shell. En plus de cela, il y a beaucoup de caractéristiques et d'abstractions pratiques.
Étant donné que Pueue n'est lié à aucun terminal, vous pouvez contrôler vos tâches à partir de n'importe quel terminal sur la même machine. La file d'attente sera traitée en continu, même si vous n'avez plus de sessions SSH actives.
Pueue est considéré comme une fonctionnalité complète ?. Toutes les fonctionnalités planifiées ont été ajoutées et seules les améliorations mineures, les fixations de bogues et les travaux de maintenance réguliers seront fusionnés.
pueued court en arrière-plan. Pas besoin d'être connecté.log et status si vous souhaitez afficher des informations sur les tâches dans un autre programme.wait pour attendre des tâches spécifiques, un groupe (ou tout) pour terminer.Pueue n'est pas conçu pour être un planificateur de tâches programmable (scriptable) / exécuteur.
L'objectif de pueue réside sur l'interaction humaine, c'est-à-dire qu'il est censé être utilisé par une vraie personne sur une sorte de système d'exploitation. Voir la section des objectifs de conception
Pour cette raison, l'ensemble de fonctionnalités de pueue et pueued ainsi que leur implémentation et leur architecture ont été restés simples par conception! Même s'il peut être scénarisé dans une certaine mesure, il n'a pas été construit pour cela et il n'y a pas de soutien officiel!
Il y a certainement le besoin d'un planificateur de tâches / exécuteur complexe avec des options avancées d'accès et de planification API, mais c'est le travail pour un autre projet, car ce n'est pas pour cela que Pueue a été construit.
Il existe différentes façons d'installer Pueue.
La façon préférée d'installer Pueue est d'utiliser le gestionnaire de packages de votre système. Cela déploiera généralement automatiquement des fichiers de service et des achèvements.
Pueue a été emballé pour pas mal de distributions, vérifiez le tableau à droite pour plus d'informations.
Les binaires statiques liés (si possible) pour Linux (incl. ARM), Mac OS et Windows sont construits sur chaque version.
Vous pouvez télécharger les binaires pour le client et le démon ( pueue et pueued ) pour chaque version de la page de version.
Téléchargez simplement les deux binaires pour votre système, renommez-les à pueue et pueued et placez-les dans votre dossier $PATH / Program.
Pueue est conçu pour la version de rouille stable actuelle. Il peut se compiler sur les versions plus anciennes, mais ce n'est pas testé ou officiellement soutenu.
cargo install --locked pueue Cela installera Pueue sur $CARGO_HOME/bin/pueue (la valeur par défaut est ~/.cargo/bin/pueue )
Pueue est conçu pour la version de rouille stable actuelle. Il peut se compiler sur les versions plus anciennes, mais ce n'est pas testé ou officiellement soutenu.
git clone [email protected]:Nukesor/pueue
cd pueue
cargo build --release --locked --path ./pueue Les binaires finaux seront situés dans target/release/{pueue,pueued} .
Vérifiez le wiki pour commencer :).
Il existe également des sections détaillées pour (espérons-le) toutes les fonctionnalités importantes:
En plus de cela, il y a une option d'aide (-H) pour toutes les commandes.
Interact with the Pueue daemon
Usage: pueue [OPTIONS] [COMMAND]
Commands:
add Enqueue a task for execution.
There're many different options when scheduling a task.
Check the individual option help texts for more information.
Furthermore, please remember that scheduled commands are executed via your system shell.
This means that the command needs proper shell escaping.
The safest way to preserve shell escaping is to surround your command with quotes, for example:
pueue add 'ls $HOME && echo "Some string"'
remove Remove tasks from the list. Running or paused tasks need to be killed first
switch Switches the queue position of two commands. Only works on queued and stashed commands
stash Stashed tasks won't be automatically started. You have to enqueue them or start them by hand
enqueue Enqueue stashed tasks. They'll be handled normally afterwards
start Resume operation of specific tasks or groups of tasks.
By default, this resumes the default group and all its tasks.
Can also be used force-start specific tasks.
restart Restart failed or successful task(s).
By default, identical tasks will be created and enqueued, but it's possible to restart in-place.
You can also edit a few properties, such as the path and the command, before restarting.
pause Either pause running tasks or specific groups of tasks.
By default, pauses the default group and all its tasks.
A paused queue (group) won't start any new tasks.
kill Kill specific running tasks or whole task groups..
Kills all tasks of the default group when no ids or a specific group are provided.
send Send something to a task. Useful for sending confirmations such as 'yn'
edit Edit the command, path or label of a stashed or queued task.
By default only the command is edited.
Multiple properties can be added in one go.
group Use this to add or remove groups.
By default, this will simply display all known groups.
status Display the current status of all tasks
format-status Accept a list or map of JSON pueue tasks via stdin and display it just like "pueue status".
A simple example might look like this:
pueue status --json | jq -c '.tasks' | pueue format-status
log Display the log output of finished tasks.
Only the last few lines will be shown by default.
If you want to follow the output of a task, please use the "follow" subcommand.
follow Follow the output of a currently running task. This command works like "tail -f"
wait Wait until tasks are finished.
By default, this will wait for all tasks in the default group to finish.
Note: This will also wait for all tasks that aren't somehow 'Done'.
Includes: [Paused, Stashed, Locked, Queued, ...]
clean Remove all finished tasks from the list
reset Kill all tasks, clean up afterwards and reset EVERYTHING!
shutdown Remotely shut down the daemon. Should only be used if the daemon isn't started by a service manager
parallel Set the amount of allowed parallel tasks
By default, adjusts the amount of the default group.
No tasks will be stopped, if this is lowered.
This limit is only considered when tasks are scheduled.
completions Generates shell completion files. This can be ignored during normal operations
help Print this message or the help of the given subcommand(s)
Options:
-v, --verbose... Verbose mode (-v, -vv, -vvv)
--color <COLOR> Colorize the output; auto enables color output when connected to a tty [default: auto] [possible values: auto, never, always]
-c, --config <CONFIG> If provided, Pueue only uses this config file. This path can also be set via the "PUEUE_CONFIG_PATH" environment variable. The commandline option overwrites the environment variable!
-p, --profile <PROFILE> The name of the profile that should be loaded from your config file
-h, --help Print help
-V, --version Print version
Pueue est conçu pour être un outil d'assistance pratique pour un seul utilisateur.
Il est censé travailler autonome et sans aucune intégration externe. L'idée est de rester simple et d'éviter le fluage des fonctionnalités.
De plus, Pueue est considéré comme une fonctionnalité complète ?. Toutes les fonctionnalités planifiées ont été ajoutées et seules les améliorations mineures, les fixations de bogues et les travaux de maintenance réguliers seront fusionnés.
Pour mémoire, les fonctionnalités suivantes n'étaient pas incluses car elles sont hors de portée:
pueue-lib , qui fournit des appels d'API appropriés pour pueued . Cependant, gardez à l'esprit que pueued est toujours censé être un exécuteur de tâche minimaliste avec le moins de logique de planification que possible.Il semble y avoir la nécessité d'un projet qui satisfait tous ces points mentionnés ci-dessus, mais ce sera le travail d'un autre outil. J'encourage beaucoup à faire de Pueue et j'aimerais voir les fourches devenir d'autres projets sympas!
Slurm est un système de gestion et de planification de cluster riche et largement utilisé. Si vous vous trouvez dans le besoin de configurations complexes telles que plusieurs piscines de travailleurs ou nœuds distribués, Slurm sera bien mieux adapté que Pueue.
Un processeur parallèle robuste et caractéristique avec du joblog basé sur le texte et des N-retraités. GNU Parallel est capable de faire évoluer la parallélisation multi-hôte et a du code complexe pour avoir une intégration profonde sur différents outils et coquilles, ainsi que d'autres fonctionnalités avancées. Pueue se différencie de GNU parallèle en se concentrant davantage sur la visibilité sur de nombreuses commandes de longue durée et en créant un emplacement central pour que les commandes soient stockées, plutôt que sur la concentration de GNU Parallel sur le froncement d'une tâche spécifique.
PM2 est un outil de gestion des processus, dont l'accent est davantage sur la gestion des tâches récurrentes et de longue durée de vie. Il semble être assez mature et a une interface riche.
Un système de file d'attente très léger qui ne nécessite aucune configuration, maintenance, supervision ou tout processus de longue durée.
Lien vers le projet
Task Spooler est un système de lots UNIX où les tâches se sont en cours d'exécution après l'autre.
Liens vers Ubuntu Manpage et une fourche sur GitHub. Le site Web d'origine semble être en panne.
Les demandes de fonctionnalités et les demandes de traction sont très appréciées et bienvenues!
Quoi qu'il en soit, parlez-moi un peu de vos idées avant de commencer à pirater! C'est toujours bon de savoir sur quoi vous travaillez et je pourrais avoir quelques suggestions ou conseils :)
Selon le type de votre contribution, vous devez vous ramifier à partir de la branche main . Pueue est suffisamment mature pour ne plus avoir besoin d'une branche development et tous les modifications sont collectées là-bas avant qu'une nouvelle version ne soit poussée. Les hotfix urgents pourraient être déployés sur une succursale séparée, mais cela sera décidé au cas par cas.
Il y a aussi le guide d'architecture, qui est censé vous donner un bref aperçu et une introduction au projet.
Copyright © 2019 Arne Beer (@nukesor)