Bases de Linux et de la ligne de commande

Pendant qu'un long ./sim.sh s'exécute dans un terminal, on veut utiliser d'autres commandes dans le même terminal. Que se passe-t-il si l'on appuie sur Ctrl+Z, puis qu'on exécute bg ?

  1. ACtrl+Z termine sim.sh, et bg relance la même commande depuis le début en arrière-plan
  2. BCtrl+Z suspend sim.sh, et bg le fait reprendre là où il s'était arrêté, en arrière-plan
  3. CCtrl+Z fait passer sim.sh en arrière-plan, où il continue de s'exécuter, et bg le suspend
Afficher la réponse et l'explication

Réponse : B. Ctrl+Z suspend sim.sh, et bg le fait reprendre là où il s'était arrêté, en arrière-plan

Appuyer sur Ctrl+Z envoie SIGTSTP à la tâche qui s'exécute au premier plan, et la tâche est suspendue. bg demande à cette tâche de reprendre son exécution et de continuer en arrière-plan, et fg la ramène au premier plan. Les tâches et leur état se vérifient avec jobs, et pour exécuter une commande en arrière-plan dès le départ, on la lance avec &, comme dans « ./sim.sh & ». Cependant, les tâches en arrière-plan peuvent elles aussi s'arrêter quand la connexion du terminal est perdue : un long traitement demande donc une autre précaution.

S'entraîner sur ce thème Retour au thème

Autres questions sur Bases de Linux et de la ligne de commande

  1. Sur un serveur auquel on s'est connecté par SSH, on a lancé un long traitement avec « ./run.sh & », puis, en fermant la connexion, le traitement s'est arrêté lui aussi. Quelle est la manière la plus appropriée de le lancer pour qu'il continue après la fermeture de la connexion ?
  2. Si l'on exécute les deux lignes ci-dessus dans un shell, quels caractères s'affichent ?
  3. Si l'on exécute dans l'ordre les commandes ci-dessus, quelle est la sortie des deux commandes echo ?
  4. Comme ci-dessus, on exécute le script s.sh avec des arguments. Quelle est la sortie ?
  5. Dans un script shell, dans quel cas la condition du if ci-dessus est-elle vraie ?