Quand vous fermez votre fenêtre de terminal SSH, Linux envoie un signal SIGHUP qui tue immédiatement votre commande node server.js. Découvrez pourquoi et comment transformer votre script en un service d'arrière-plan permanent.
Envoyé par le shell Linux pour fermer tous les processus fils attachés à la session SSH.
Processus d'arrière-plan détaché de tout terminal interactif tournant en boucle continue.
Solutions historiques permettant d'ignorer le signal de raccrochage (Hangup).
Le gestionnaire de services natif de Linux garantissant l'exécution au démarrage de l'OS.
# 1. Problème classique : exécuter Node au premier plan $ node server.js [Server] Listening on port 3000... # 🚨 Dès que vous quittez SSH ou fermez votre PC portable : LE SERVEUR CRASHE ! # 2. Méthode historique : nohup avec redirection des flux et esperluette (&) $ nohup node server.js > /var/log/app.log 2>&1 & [1] 14820 # PID du processus créé en arrière-plan # 3. Vérifier que le processus tourne toujours indépendamment de la console $ ps aux | grep "node server.js" ubuntu 14820 0.4 1.8 128456 38420 ? S 14:30 0:02 node server.js # 4. Problème persistant : si le code lève une exception non gérée, il meurt sans redémarrer ! # => C'est pourquoi nous utilisons PM2 ou systemd dans la leçon suivante.
Chaque session SSH ouverte crée un terminal virtuel (TTY/PTS). Tous les programmes que vous lancez (npm start, node server.js) sont des processus enfants de ce terminal.
Lorsque vous fermez le terminal, Linux considère que l'utilisateur est parti : il envoie le signal SIGHUP (Signal 1 - Hang Up) à tous les processus rattachés. Par défaut, Node.js intercepte ce signal et s'arrête immédiatement !
nohup détache le processus du terminal : | Méthode | Persiste à la fermeture SSH ? | Redémarre au Crash ? | Redémarre au Reboot Serveur ? |
|---|---|---|---|
| node server.js (Normal) | ❌ Non (Meurt immédiatement) | ❌ Non | ❌ Non |
| nohup node server.js & | ✅ Oui | ❌ Non (Reste mort) | ❌ Non |
| tmux / screen | ✅ Oui (Session virtuelle) | ❌ Non | ❌ Non |
| PM2 / systemd | ✅ Oui (Daemon natif) | ✅ Oui (Auto-restart en < 1s) | ✅ Oui (Démarrage automatique au boot) |