Vous lancez une mise à jour, une sauvegarde ou une commande longue en SSH, puis la connexion saute. Si la commande tournait dans un terminal classique, c’est souvent terminé. Screen sous Linux évite justement ce genre de mauvaise surprise : la session reste active côté serveur, même si votre terminal local disparaît.
Je l’utilise surtout pour les interventions simples où je veux garder la main sans monter une usine à gaz. Ce n’est pas aussi confortable que tmux pour travailler toute la journée dans plusieurs panneaux, mais pour détacher et reprendre une commande d’admin, screen fait encore très bien le travail.

Installer screen si la commande n’est pas disponible
Sur beaucoup de serveurs, screen n’est pas installé par défaut. Vérifiez d’abord :
screen --version
Si la commande est absente, installez le paquet avec le gestionnaire de votre distribution.
sudo apt update
sudo apt install screen
sudo dnf install screen
sudo pacman -S screen
Avant de lancer une opération sensible, ouvrez une session SSH stable et gardez si possible un second accès de secours. Screen limite la casse quand votre terminal tombe, mais il ne remplace pas une console d’urgence si vous cassez le réseau ou SSH.
Créer une session screen nommée
Évitez les sessions anonymes. Avec un nom clair, vous saurez tout de suite ce qui tourne encore sur le serveur.
screen -S sauvegarde
Vous arrivez dans un nouveau terminal. À partir de là, lancez votre commande comme d’habitude. Par exemple :
rsync -avh /srv/data/ /mnt/backup/data/
Le point important : cette commande tourne dans la session screen, pas directement dans votre terminal SSH. Si votre ordinateur se met en veille ou si votre connexion coupe, la session screen peut continuer côté serveur.
Détacher la session sans arrêter la commande
Pour quitter la session screen sans arrêter ce qui tourne dedans, utilisez le raccourci suivant :
Ctrl+A- puis
D
Screen affiche généralement un message du type [detached]. Vous revenez alors dans votre shell normal. La commande lancée dans screen continue de tourner.
Attention à ne pas taper exit si vous voulez seulement détacher la session. exit ferme le shell dans screen. Si c’était la dernière fenêtre active, la session se termine.
Lister et reprendre une session screen
Pour voir les sessions existantes :
screen -ls
Vous pouvez ensuite reprendre la session par son nom :
screen -r sauvegarde
Si une seule session existe, screen -r suffit souvent. Sur un serveur partagé ou sur une machine où vous lancez plusieurs tâches, je préfère utiliser le nom. C’est moins risqué que de reprendre la mauvaise session au mauvais moment.
Si screen vous indique que la session est encore attachée ailleurs, par exemple après une coupure SSH mal détectée, utilisez :
screen -d -r sauvegarde
Cette option détache d’abord l’ancienne connexion, puis rattache la session dans votre terminal actuel. C’est pratique, mais à utiliser avec un minimum de prudence sur un compte partagé : vous pouvez déconnecter quelqu’un qui était réellement en train de travailler dans cette session.
Suivre la même session depuis deux terminaux
Dans certains cas, vous pouvez vouloir voir la même session depuis deux terminaux. Par exemple, une console ouverte sur un écran et une autre depuis votre portable.
screen -x sauvegarde
Les deux terminaux partagent alors la même session. Tout le monde voit la même chose et tape dans le même shell. C’est utile pour une intervention accompagnée, beaucoup moins si vous êtes deux à écrire en même temps sans vous coordonner.
Fermer proprement une session screen
Quand la commande est terminée, quittez le shell ouvert dans screen :
exit
Vous pouvez aussi utiliser Ctrl + D. Une fois la dernière fenêtre fermée, la session screen disparaît de la liste.
Pour forcer l’arrêt d’une session nommée depuis l’extérieur, utilisez :
screen -S sauvegarde -X quit
Là, soyez sûr de vous. Cette commande ferme la session screen et ce qui tourne dedans. Sur une sauvegarde, une migration ou une mise à jour, je préfère toujours reprendre la session, regarder l’état réel, puis arrêter seulement si c’est nécessaire.
Les pièges classiques en administration
Le premier piège, c’est root. Si vous lancez sudo screen, la session appartient à root. Vous devrez donc souvent la reprendre avec sudo screen -r. Dans la plupart des cas, je préfère lancer screen avec mon utilisateur normal, puis utiliser sudo uniquement pour les commandes qui en ont besoin.
Le deuxième piège, c’est de confondre screen et un gestionnaire de service. Une commande qui tourne dans screen reste liée à une session interactive. Pour un service durable, un daemon ou une tâche planifiée, utilisez plutôt systemd, un timer ou un service dédié. L’article sur les timers systemd est plus adapté à ce type de besoin.
Le troisième piège, c’est la commande sans journal. Si vous lancez une tâche importante, redirigez la sortie dans un fichier ou utilisez un outil de log. Vous pourrez ensuite suivre le résultat avec tail sous Linux.
./script-maintenance.sh > maintenance.log 2>&1
Vous pouvez alors détacher screen, revenir plus tard, et relire ce qui s’est passé même si l’affichage a défilé trop vite.
Screen, nohup ou tmux : lequel choisir ?
Pour une commande non interactive qui doit juste continuer après la fermeture de SSH, nohup peut suffire. Vous lancez la commande, vous récupérez la sortie dans un fichier, et vous n’avez pas besoin de reprendre une interface.
Pour une vraie session de travail avec plusieurs fenêtres, des panneaux, une configuration plus moderne et une meilleure ergonomie, tmux est souvent plus agréable. Mais sur un serveur minimal, screen reste disponible, simple et très efficace. Pour une intervention courte, je ne m’embête pas : screen -S nom, je lance la commande, je détache, puis je reviens contrôler.
La vérification à faire avant de fermer SSH
Avant de fermer votre session SSH, prenez dix secondes pour vérifier que screen voit bien votre session :
screen -ls
Si votre session apparaît comme détachée, vous pouvez quitter SSH plus sereinement. Si elle n’apparaît pas, ne partez pas du principe que screen protège votre commande. Revenez dans le terminal, vérifiez où vous avez lancé la tâche, et corrigez avant de couper la connexion.
La documentation screen(1) et le manuel GNU Screen détaillent toutes les options. Pour un usage admin courant, retenez surtout quatre commandes : créer avec screen -S, détacher avec Ctrl + A puis D, reprendre avec screen -r, et vérifier avec screen -ls.