Les shells interactifs emploient le contrôle des tâches pour coordonner les pipelines au sein d’une session de terminal. Une tâche peut contenir un processus ou tout un pipeline, normalement rassemblé dans un groupe de processus afin que le terminal et le shell puissent agir sur lui comme une unité.
Processus · Leçon 11
Contrôle des tâches
Découvrez comment un shell interactif gère les tâches au premier plan, en arrière-plan et arrêtées.
Démarrer une tâche en arrière-plan
Ajoutez & pour démarrer un pipeline de manière asynchrone :
$ sleep 1000 &
[1] 18420
Le shell rend l’invite sans attendre la fin de la tâche. L’état en arrière-plan ne redirige pas automatiquement la sortie, ne détache pas le terminal de contrôle et ne permet pas à la tâche de survivre à la déconnexion. Redirigez explicitement l’entrée et la sortie si nécessaire, et employez un gestionnaire de services, un planificateur ou un multiplexeur de terminal pour les travaux qui doivent survivre au shell interactif.
Une tâche en arrière-plan qui tente de lire le terminal de contrôle est normalement arrêtée par SIGTTIN, car elle n’est pas le groupe de processus au premier plan du terminal.
Que demande un & final à un shell interactif ?
Répertorier les tâches du shell
La commande intégrée jobs répertorie les tâches connues du shell actuel :
$ jobs
[1] Running sleep 1000 &
[2]- Running sleep 1001 &
[3]+ Stopped sleep 1002
Le nombre entre crochets est un identifiant de tâche du shell, et non un PID. Le préfixe % forme une spécification telle que %1. Le marqueur + désigne la tâche actuelle sélectionnée par de nombreuses commandes si aucun opérande n’est fourni ; - désigne la tâche précédente.
Comme la table des tâches appartient à un shell, celui d’un autre terminal ne peut normalement ni répertorier ni viser ces tâches avec ses propres commandes intégrées jobs, fg ou bg.
Que répertorie la commande intégrée jobs ?
Arrêter et reprendre une tâche
Pendant qu’une tâche se trouve au premier plan, l’appui sur Ctrl-Z demande normalement au terminal d’envoyer SIGTSTP à son groupe de processus au premier plan. Le shell reprend le contrôle après l’arrêt de la tâche :
$ sleep 1002
^Z
[3]+ Stopped sleep 1002
Reprenez la tâche arrêtée actuelle en arrière-plan avec :
$ bg
bg envoie un signal de reprise et laisse la tâche hors du premier plan du terminal. Cette commande ne sert qu’à une tâche arrêtée ; une commande déjà en cours d’exécution en arrière-plan n’a pas besoin d’être reprise.
Que fait bg %3 à la tâche 3 arrêtée ?
Placer une tâche au premier plan
Employez fg avec une spécification de tâche pour en faire le groupe de processus au premier plan du terminal et l’attendre :
$ fg %1
Sans opérande, fg sélectionne normalement la tâche actuelle marquée par +. Une tâche arrêtée est reprise lorsqu’elle passe au premier plan.
Que fait fg %1 ?
Envoyer un signal à une tâche
Les shells permettent à kill d’accepter une spécification de tâche :
$ kill -TERM %1
Cela envoie normalement le signal au groupe de processus de la tâche plutôt qu’à un seul membre du pipeline. Examinez d’abord la tâche sélectionnée et employez SIGTERM avant d’envisager une escalade forcée. Les spécifications de tâches appartiennent à la syntaxe du shell ; les scripts et les outils externes emploient plus couramment des PID ou des identifiants de groupes de processus vérifiés.
Quel opérande désigne la tâche 1 du shell plutôt que le processus de PID 1 ?
Entraînez-vous à ces opérations avec des commandes inoffensives telles que sleep dans l’atelier Gérer et surveiller les processus Linux.
Leçon terminée
Vous avez terminé Contrôle des tâches
Vous savez maintenant déplacer délibérément les tâches entre les états contrôlés par le shell.
Employer
&pour lancer une tâche en arrière-plan sans détachement automatique.Employer
jobspour examiner la table des tâches du shell actuel.Arrêter avec
Ctrl-Zet reprendre en arrière-plan avecbg.Ramener une tâche sélectionnée au premier plan avec
fg.Désigner les tâches du shell avec
%ID_TÂCHElors de l’envoi de signaux.
Conservez votre progression
Créez un compte gratuit pour enregistrer cette leçon et continuer sur n'importe quel appareil.
Créer un compte gratuit