Sommaire

Sortie du terminal

Chaque commande exécutée est liée au terminal sur lequel elle est lancée. Cela signifie notamment que si l’on ferme un terminal pendant qu’une commande (par exemple un script) y fonctionne, celle-ci est interrompue.

Pour empêcher ce comportement plusieurs outils sont disponibles, dont les deux plus connus sont nohup et screen.

1. Détacher définitivement : nohup

La commande nohup nohangup ») permet d’exécuter une commande totalement détachée du terminal courant : l’entrée standard stdin de la commande est « vide », sa sortie standard stdout est redirigée dans un fichier appelé nohup.out et sa sortie d’erreur stderr est redirigée vers la sortie standard de nohup. De plus, lorsque l’on souhaite stocker la sortie dans un fichier portant un autre nom, il suffit de rediriger la sortie de nohup vers le fichier demandé : nohup détecte que sa sortie n’est pas un terminal et ne la redirige donc pas vers nohup.out.

Notez que nohup ne rend pas la main : si on l’interrompt avec [Ctrl] C par exemple, la commande est également interrompue. Par contre, si on ferme le terminal dans lequel nohup est lancée, la commande ne s’interrompt pas. Si l’on souhaite que nohup rende la main immédiatement, il suffit d’y ajouter le caractère & (cf. chapitre Les bases de l’écriture d’un script - Enchaînements ...