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.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. 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] 1
    • 4120
    • [1]+ Done sleep 300
    Voir la réponse

    [1] 4120

    Le 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 fg ou bg le fait repartir.

    Voir la réponse

    Ctrl+Z envoie SIGTSTP au programme du premier plan : il est stoppé, pas terminé, et fg ou bg le 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.