GNU/Linux >> Tutoriels Linux >  >> Linux

Comment ajouter des commandes Linux à la file d'attente et les exécuter une par une

Aujourd'hui, je suis tombé sur un utilitaire de ligne de commande Linux sympa appelé "Task Spooler" . Comme son nom l'indique, Task spooler est un système batch Unix qui peut être utilisé pour ajouter les commandes Linux à la file d'attente et les exécuter les unes après les autres dans l'ordre numérique (ordre croissant, pour être précis). Veuillez ne pas le confondre avec 'at' commande, qui est utilisée pour exécuter des commandes Linux à une heure spécifiée. Contrairement à chez commande, le spouleur de tâches exécute une commande immédiatement à partir de la file d'attente dès que la commande précédente est terminée.

Cet utilitaire peut être très utile lorsque vous devez exécuter un grand nombre de commandes, mais vous ne voulez pas perdre de temps à attendre qu'une commande se termine et à exécuter la commande suivante. Vous pouvez tous les mettre en file d'attente et Task Spooler les exécutera un par un. En attendant, vous pouvez faire d'autres activités. Chaque utilisateur de chaque système a sa propre file d'attente de travaux. C'est également très utile lorsque vous savez que vos commandes dépendent de beaucoup de RAM, d'une grande utilisation du disque, donnent beaucoup de sortie, ou pour une raison quelconque, il vaut mieux ne pas les exécuter en même temps. En un mot, Task Spooler est un programme de ligne de commande permettant de mettre en file d'attente d'autres commandes pour l'exécution par lots.

Télécharger - EBook gratuit :"Linux Command Line Cheat Sheet"

Dans ce bref tutoriel, laissez-moi vous montrer comment installer et utiliser Task Spooler dans des systèmes d'exploitation de type Unix.

Installer le spouleur de tâches sur Debian, Ubuntu, Linux Mint

Task Spooler est disponible dans les référentiels par défaut de Debian, Ubuntu et d'autres systèmes basés sur DEB. Vous pouvez donc l'installer à l'aide de la commande :

$ sudo apt-get install task-spooler

Pour les autres systèmes, vous pouvez télécharger le fichier source du spouleur de tâches à partir de ce lien et créez-le en tant que package natif pour la distribution Linux que vous utilisez et installez-le comme expliqué dans l'une des méthodes suivantes.

  • Comment créer facilement des packages Linux pour plusieurs plates-formes
  • Comment créer des packages à partir de la source à l'aide de CheckInstall

Ajoutez des commandes Linux à la file d'attente et exécutez-les une par une à l'aide du spouleur de tâches

Voyons quelques exemples pratiques. Tous les exemples fournis ici sont testés dans le système Ubuntu 18.04 LTS.

Remarque : Dans les systèmes Debian/Ubuntu, le spouleur de tâches doit être exécuté avec la commande 'tsp', car il existe un autre programme portant le même nom appelé ts (outil Time Stamping Authority (client/serveur)). Pour les distributions Linux autres qu'Ubuntu/Debian, vous pouvez l'exécuter à l'aide de la commande 'ts'.

Exécutez la commande tsp :

$ tsp

Pour l'instant, il n'y a rien dans la file d'attente. Ajoutons quelques commandes à la file d'attente. Pour ce faire, exécutez :

$ tsp echo Welcome OSTechNix
$ tsp echo "Hello World"

Maintenant, exécutez à nouveau la commande tsp pour afficher les commandes dans la file d'attente :

$ tsp

Exemple de résultat :

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

Comme vous le voyez dans la sortie ci-dessus, chaque commande a un identifiant unique dans (0, 1, 2.. etc.) dans l'ordre croissant. En outre, il affiche l'état actuel des commandes (par exemple, terminé ou en cours d'exécution) dans la file d'attente. Les commandes d'écho sont très simples et courtes, nous avons donc obtenu le résultat comme "terminé".

Exécutons une commande qui prend plus de temps pour se terminer. Jetez un oeil à la commande suivante :

$ find / -type f -printf '%T+ %p\n' | sort | head -n 20

Cette commande trouvera et affichera les 20 fichiers les plus anciens du système de fichiers racine (/).

Ajoutez maintenant la commande ci-dessus à la file d'attente :

$ tsp find / -type f -printf '%T+ %p\n' | sort | head -n 20

Exemple de résultat :

2

Maintenant, exécutez la commande tsp pour afficher la liste des commandes dans la file d'attente.

$ tsp

Exemple de résultat :

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

Ajouter des commandes Linux à la file d'attente à l'aide du spouleur de tâches

Comme vous le voyez dans la sortie ci-dessus, la commande avec l'ID 2 est en cours d'exécution. De même, vous pouvez ajouter autant de commandes que vous souhaitez exécuter à l'aide de Task Spooler.

Mise à jour :

Comme l'un de nos lecteurs l'a mentionné dans la section des commentaires, la commande de recherche doit être exécutée comme ci-dessous :

$ tsp sh -c "find Downloads/ -type f -printf '%T+ %p\n' | sort | head -n 20"

Pour afficher la sortie d'une tâche en cours d'exécution afin de vérifier ce qui se passe, saisissez la commande suivante :

$ tsp -c 2

Ici, 2 est l'ID de la commande en cours d'exécution. Appuyez sur CTRL+C pour retourner au Terminal. Cela n'annulera pas la commande en cours d'exécution. Cela ne vous ramènera qu'au terminal. La tâche s'exécutera toujours en arrière-plan.

Vous pouvez supprimer une commande (en cours d'exécution, terminée, en file d'attente) de la file d'attente en utilisant -r drapeau suivi de l'ID comme ci-dessous.

$ tsp -r 2

La commande ci-dessus supprimera la commande qui a l'ID 2 de la file d'attente.

Pour effacer toutes les commandes de la file d'attente, exécutez simplement :

$ tsp -C

Veuillez noter qu'ici C est capitale . La commande ci-dessus effacera les dernières commandes terminées de la file d'attente. Il ne supprimera aucune commande en cours d'exécution ni les commandes de la file d'attente.

N'oubliez pas que vous devez exécuter Task Spooler dans des distributions autres que Debian/Ubuntu en utilisant ts commande.

Pour plus de détails, reportez-vous aux pages de manuel.

$ man ts

Ou,

$ man tsp

Suggestion de lecture :

  • Comment exécuter une commande pendant une durée spécifique sous Linux

Conclusion

Je trouve le spouleur de tâches très utile lorsque je dois exécuter plusieurs commandes. Je suis juste un paresseux qui attend qu'une commande se termine et en exécute une autre. À l'aide du spouleur de tâches, j'ai mis en file d'attente la liste des commandes à exécuter et il a exécuté les commandes de la file d'attente une par une dans l'ordre croissant. Je peux également afficher à tout moment la sortie de toute commande en cours d'exécution à l'aide de son ID. Veuillez noter qu'il n'exécutera pas toutes les commandes en même temps. Au lieu de cela, il exécutera les commandes les unes après les autres. Cela dit, Task Spooler est opté pour l'exécution de tâches par lots.


Linux
  1. Comment utiliser la commande Linux grep

  2. Comment utiliser la commande history sous Linux

  3. Comment créer un alias et utiliser la commande Alias ​​sous Linux

  4. Comment compresser et extraire des fichiers à l'aide de la commande tar sous Linux ?

  5. 5 façons d'exécuter des commandes UNIX / Linux (et des scripts shell) en arrière-plan

Comment exécuter automatiquement les scripts et commandes de démarrage Linux

Comment exécuter plusieurs commandes Linux en une seule commande

Les 40 commandes de serveur Linux utiles pour les débutants et les professionnels

Comment utiliser la commande supérieure en tant que gestionnaire de tâches sous Linux

Comment installer et utiliser la commande Ack sous Linux

Linux perf :comment utiliser la commande et le profileur