nohup commande &, c'est tout ce qu'il faut taper pour qu'une commande survive à votre déconnexion SSH. Sans nohup, Linux envoie SIGHUP à tous les processus de la session quand le terminal se ferme, et ils se terminent. nohup bloque ce signal.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Comprendre pourquoi un processus meurt à la déconnexion (SIGHUP)
- Lancer une commande avec
nohupet& - Rediriger stdout et stderr vers un fichier de log dédié
- Combiner
nohupavecdisownpour une protection maximale - Retrouver le processus après reconnexion avec
pgrepoups
Dans quel contexte ?
Section intitulée « Dans quel contexte ? »- Vous lancez une sauvegarde, une compilation, un transfert de données via SSH.
- Vous ne pouvez pas ou ne voulez pas laisser le terminal ouvert.
- Vous n'avez pas tmux disponible sur la machine distante.
Pourquoi les processus meurent à la déconnexion
Section intitulée « Pourquoi les processus meurent à la déconnexion »Quand vous vous déconnectez d'une session SSH, le shell reçoit le signal SIGHUP (signal 1, hang up). Il le propage à l'ensemble des processus de la session. Par défaut, la plupart des commandes réagissent à SIGHUP en se terminant.
# Simuler ce qui se passe : envoyer SIGHUP manuellementkill -HUP $PIDnohup contourne ce mécanisme en configurant l'ignorance de SIGHUP avant d'exécuter la commande.
Syntaxe de base
Section intitulée « Syntaxe de base »nohup commande arguments &nohup: configure l'ignorance de SIGHUP puis exécute la commande&: place le processus en arrière-plan (indispensable, sans&,nohupbloque le terminal)
# Exemple concretnohup rsync -avz /data/ user@serveur:/backup/ &echo "Sauvegarde lancée, PID=$!"Le fichier nohup.out
Section intitulée « Le fichier nohup.out »Si vous ne redirigez pas la sortie, nohup crée automatiquement un fichier nohup.out dans le répertoire courant pour capturer stdout :
cd /home/bobnohup mon-script.sh &# --> nohup : l'entrée standard est ignorée, la sortie est ajoutée à 'nohup.out'ls -la nohup.outtail -f nohup.out # surveiller la progressionRedirection explicite (recommandé)
Section intitulée « Redirection explicite (recommandé) »La bonne pratique est de spécifier vous-même le fichier de log :
nohup mon-script.sh > /var/log/mon-script.log 2>&1 &PID=$!echo "PID=$PID, logs dans /var/log/mon-script.log"> fichier.log: redirige stdout2>&1: redirige stderr vers le même fichier- Quand vous redirigez explicitement,
nohup.outn'est pas créé
Pour suivre l'avancement en temps réel depuis une autre connexion :
tail -f /var/log/mon-script.logCombiner nohup et disown
Section intitulée « Combiner nohup et disown »nohup protège contre SIGHUP. disown retire la tâche de la table de jobs du shell. Combinés, ils offrent la protection maximale :
nohup ma-commande > sortie.log 2>&1 &PID=$!disown $PIDecho "Tâche $PID lancée, protégée contre HUP et détachée du shell"Quand utiliser la combinaison ?
- Quand vous travaillez dans un shell interactif et que vous ne voulez aucun risque de fin prématurée.
- Quand des scripts côté serveur redémarrent les sessions automatiquement.
Retrouver un processus nohup après reconnexion
Section intitulée « Retrouver un processus nohup après reconnexion »Après déconnexion et reconnexion, votre nouveau shell n'a aucune mémoire des tâches précédentes. Retrouvez le processus avec :
# Par nom de commandepgrep -a mon-scriptpgrep -u bob rsync
# Par PID (si vous l'avez noté)ps -p 1234 -o pid,stat,comm,etime
# Lire les logstail -f /var/log/mon-script.logRécapitulatif : nohup vs disown vs tmux
Section intitulée « Récapitulatif : nohup vs disown vs tmux »| Outil | Quand l'utiliser | Avantage | Limite |
|---|---|---|---|
nohup commande & | Tâche simple, connexion unique | Une commande suffit | Pas d'interactivité possible après |
disown -h $PID | Commande déjà lancée sans nohup | Rattrapage après le fait | Moins robuste que nohup |
nohup ... & disown | Protection maximale | Immunisé SIGHUP et détaché | Pas de reprise interactive |
tmux | Session interactive, suivi en direct | Reconnexion complète possible | Nécessite tmux installé |
Dépannage
Section intitulée « Dépannage »| Symptôme | Cause probable | Solution |
|---|---|---|
nohup.out absent alors que la tâche tourne | Sortie redirigée explicitement | Normal, cherchez votre fichier de log |
nohup.out dans le mauvais dossier | nohup crée le fichier dans $PWD au moment du lancement | Toujours spécifier un chemin absolu en redirection |
| La commande se termine quand même à la déconnexion | Vous avez oublié &, nohup a bloqué le terminal | Relancer avec nohup commande & |
| Impossible de retrouver le processus après reconnexion | PID non noté, commande trop générique | Toujours noter le PID ou utiliser une commande avec un nom unique |
Deux nohup.out qui se mélangent | Deux tâches nohup dans le même répertoire sans redirection | Utiliser des fichiers de log distincts pour chaque tâche |
Contrôle de connaissances
Section intitulée « Contrôle de connaissances »Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.
Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Profil de compétences
Quoi faire maintenant
Ressources pour progresser
Des indices pour retenter votre chance ?
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications
À retenir
Section intitulée « À retenir »nohupintercepte SIGHUP : la commande ne se termine plus à la déconnexion SSH.- Ajoutez toujours
&, sans lui,nohupbloque votre terminal. - Redirigez explicitement vers un fichier de log :
nohup commande > mon.log 2>&1 & - Combinez avec
disown $!pour une protection complète. - Notez le PID ou utilisez un nom de log explicite pour retrouver la tâche après reconnexion.
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Travailler avec tmux : La solution complète : sessions persistantes avec reconnexion et interactivité.