Comment lancer un traitement unix et se déconnecter sans en provoquer l’arrêt ?

Solution 1

On peut être amené à lancer un traitement en ligne de commande sans attendre la fin du traitement pour se déconnecter.
Le problème est que la déconnexion entraine la fin du processus attaché à notre session.

Heureusement monsieur Linux a pensé à nous. Une commande permet d’attacher le processus du traitement à une session permanente (PID 1).

ça se passe comme suit :

nohup montraitement &

La sortie standard (stdout) est redirigée dans un fichier nohup.out créé dans le répertoire courant.

Il peut être utile de rediriger la sortie d’erreur (stderr) dans ce même fichier.
La commande devient :

nohup montraitement 2&>1 &

Le 2&>1 indique au flux de 2 (stderr) d’être redirigé vers le flux 1 (stdout).

Attention : le caractère & est indispensable. Il permet de faire tourner le traitement en tâche de fond.

Solution 2

J’ajouterais que si vous lancez votre script en tapant ./monscript.sh, pour pouvoir fermer votre session tranquille, il faut taper CTRL+Z, puis bg (=background), ou fg pour reprendre votre script.