Premier plan et arrière-plan
Le contrôle des tâches d'un shell : lancer avec &, stopper avec Ctrl+Z, jobs, fg, bg, les numéros %n, les états Running, Stopped et Done, et survivre à la fermeture du terminal avec nohup et disown.
- 25 cartes
- 4 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Mises en situation
Quelques cartes du deck
Tâche (job) : de quoi s'agit-il ?
Voir la réponse
Commande, ou enchaînement de commandes, lancée par le shell, qu'il suit dans sa table sous un numéro [1], [2], et ainsi de suite.
Ce numéro est propre au shell et n'a rien à voir avec le PID : %2 désigne la tâche 2, alors que le PID est un numéro du système entier.
Qu'affiche bash quand on tape
sleep 300 &?[1] 4120[4120] 14120[1]+ Done sleep 300
Voir la réponse
[1] 4120Le numéro de tâche vient d'abord entre crochets, puis le PID du processus lancé. Done n'apparaît que plus tard, quand la tâche s'est terminée.
Ctrl+Z envoie … au programme du premier plan : il est …, pas terminé, et
fgoubgle fait repartir.Voir la réponse
Ctrl+Z envoie SIGTSTP au programme du premier plan : il est stoppé, pas terminé, et
fgoubgle fait repartir.Stoppé veut dire figé en mémoire : la tâche apparaît dans jobs avec l'état Stopped, prête à repartir là où elle s'était arrêtée.
Arrière-plan : de quoi s'agit-il ?
Voir la réponse
Mode où une commande tourne sans garder le clavier : le shell rend la main aussitôt. On le demande en terminant la ligne par &.
Le shell affiche le numéro de tâche et le PID, par exemple [1] 4120. Une tâche de fond qui veut lire le clavier est stoppée par le système.
Une sauvegarde lancée en SSH avec
&s'arrête dès que la connexion tombe. Quelle est la cause et la solution ?- Sa sortie n'était pas redirigée ; relancer avec > log 2>&1 & suffit à la protéger
- SIGHUP part du shell vers ses tâches ; relancer avec nohup, disown ou dans tmux
- SSH envoie SIGKILL à toute commande en fond ; il faut la lancer en premier plan
- La sauvegarde est devenue un zombie à la chute du réseau ; il faut tuer son père
Voir la réponse
SIGHUP part du shell vers ses tâches ; relancer avec nohup, disown ou dans tmux
La chute de la connexion ferme le terminal, donc SIGHUP part vers le shell, puis vers ses tâches. Ni &, ni une redirection ne protègent de ce signal. Un multiplexeur comme tmux garde la session vivante sans connexion.