Contrôle des tâches
100%

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.

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é.

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 ?

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 jobs pour examiner la table des tâches du shell actuel.

  • Arrêter avec Ctrl-Z et reprendre en arrière-plan avec bg.

  • Ramener une tâche sélectionnée au premier plan avec fg.

  • Désigner les tâches du shell avec %ID_TÂCHE lors 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
Retour à Processus