SCREEN : utilisation et cas d’usage des screens sous Linux

20 juillet 2026 — par admin_libra

Lorsqu’une session SSH se coupe inopinément au beau milieu d’une opération critique — mise à jour de paquets, compilation, migration de base de données — la perte de contexte peut être coûteuse. GNU Screen répond à ce problème fondamental de l’administration système : il découple le processus en cours de la session terminal qui l’a lancé, rendant vos processus imperméables aux interruptions réseau et aux déconnexions accidentelles.

Screen est un multiplexeur de terminal : il permet d’ouvrir plusieurs fenêtres shell indépendantes dans une seule connexion, de naviguer entre elles, de s’en détacher et de les retrouver intactes plus tard — même après une déconnexion complète. Conçu dans les années 1980 et toujours activement maintenu, il reste un réflexe incontournable pour tout administrateur système travaillant en SSH sur des serveurs de production.

Cet article couvre l’installation, la gestion des sessions et fenêtres, les raccourcis essentiels, la division d’écran, les cas d’usage avancés (console série, partage de session, logging) et la personnalisation via ~/.screenrc.

Installation sous Debian et Ubuntu

Screen est disponible dans les dépôts officiels et s’installe en une commande :

sudo apt update && sudo apt install screen

Vérification de la version installée :

screen --version
# Screen version 4.09.01 (GNU) 20-Aug-23

Sur la plupart des systèmes Debian/Ubuntu récents, screen est déjà présent. Un which screen renvoyant un chemin confirme qu’aucune installation n’est nécessaire.

Gérer les sessions screen

Créer une session nommée

Toujours nommer ses sessions : c’est la première bonne pratique. Un nom explicite évite de s’y perdre lorsque plusieurs sessions coexistent :

# Créer une session nommée
screen -S migration-db

# Démarrer une session détachée d'emblée et y exécuter une commande
screen -S sauvegarde -dm bash -c 'rsync -av /data/ /backup/ && echo DONE'

L’option -dm démarre la session en mode détaché immédiatement — utile pour lancer des tâches de fond depuis un script ou un cron.

Lister les sessions actives

screen -ls
# There are screens on:
#     12345.migration-db    (09/07/2026 10:23:14)    (Detached)
#     12346.sauvegarde      (09/07/2026 10:25:00)    (Detached)
# 2 Sockets in /run/screen/S-root.

Chaque session est identifiée par son PID et son nom. Le statut Detached signifie qu’elle est disponible pour rattachement ; Attached indique qu’une connexion active est en cours.

Se rattacher à une session

# Rattachement par nom
screen -r migration-db

# Rattachement par PID
screen -r 12345

# Si une seule session existe
screen -r

# Forcer le détachement d'une autre connexion et se rattacher
screen -d -r migration-db

Terminer une session

# Depuis l'intérieur de la session
exit

# Depuis l'extérieur : tuer une session par son nom
screen -S migration-db -X quit

Raccourcis clavier essentiels

Tous les raccourcis screen sont précédés du préfixe Ctrl+a. La notation C-a c signifie : appuyer sur Ctrl+a, relâcher, puis taper c.

Navigation et gestion des fenêtres

  • C-a c — Créer une nouvelle fenêtre (Create)
  • C-a n — Fenêtre suivante (Next)
  • C-a p — Fenêtre précédente (Previous)
  • C-a " — Lister toutes les fenêtres (menu interactif)
  • C-a w — Afficher la liste des fenêtres dans la barre de statut
  • C-a 0..9 — Accéder directement à la fenêtre numérotée
  • C-a A — Renommer la fenêtre courante
  • C-a k — Fermer (kill) la fenêtre courante

Sessions et utilitaires

  • C-a d — Se détacher de la session (Detach)
  • C-a [ — Mode copie/défilement (scroll dans l’historique)
  • C-a ] — Coller le texte copié
  • C-a H — Activer/désactiver le logging dans un fichier
  • C-a ? — Afficher l’aide intégrée
  • C-a : — Entrer une commande screen en mode interactif

Astuce : Pour envoyer un vrai Ctrl+a à l’application qui tourne dans screen (par exemple dans vim ou bash), tapez C-a a. Screen transmet alors le caractère sans l’intercepter.

Division de l’écran (split panes)

Screen permet de diviser la fenêtre du terminal en plusieurs régions, chacune affichant une fenêtre différente. Pratique pour surveiller des logs en temps réel tout en travaillant dans un autre shell :

# Division horizontale (haut/bas) : Ctrl+a puis S (majuscule)
# Division verticale (gauche/droite) : Ctrl+a puis | (pipe)

# Passer à la région suivante : Ctrl+a puis Tab
# Depuis la nouvelle région, ouvrir une fenêtre : Ctrl+a c (ou n/p)

# Supprimer la région courante : Ctrl+a X (majuscule)
# Supprimer toutes les régions sauf la courante : Ctrl+a Q (majuscule)

Après avoir créé une région avec C-a S, naviguez vers elle avec C-a Tab, puis affichez-y une fenêtre existante avec C-a n ou ouvrez-en une nouvelle avec C-a c.

Cas d’usage avancés

Processus longue durée via SSH

Le cas d’usage le plus courant en administration système. Lancer une opération qui dure des heures, se détacher, fermer le terminal local et revenir plus tard :

# Sur le serveur distant, ouvrir une session nommée
screen -S upgrade-bdd

# Lancer l'opération dans la session
apt upgrade -y

# Se détacher sans interrompre le processus : Ctrl+a d
# [detached from 12345.upgrade-bdd]

# Fermer le terminal local, partir, revenir plus tard
ssh utilisateur@serveur
screen -r upgrade-bdd   # retrouver l'opération exactement là où elle en était

Pour les tâches planifiées, voir aussi la gestion des services avec systemd qui offre une alternative robuste pour les processus persistants.

Partage de session (debug collaboratif)

Deux administrateurs peuvent se connecter à la même session screen simultanément — idéal pour le débogage en binôme :

# Administrateur A : crée la session
screen -S debug-prod

# Administrateur B (même utilisateur Unix) : rejoint la session en lecture/écriture
screen -x debug-prod

# Pour partager entre deux utilisateurs Unix différents,
# activer le multiuser depuis l'intérieur de la session :
# C-a : multiuser on
# C-a : acladd nom_utilisateur_b

Console série et périphériques

Screen sait se connecter directement à un port série — très utile pour administrer des équipements réseau (routeurs, switches) ou des cartes embarquées via un adaptateur USB-série :

# Connexion à un équipement réseau sur /dev/ttyUSB0 à 9600 baud
screen /dev/ttyUSB0 9600

# Raspberry Pi ou équipement embarqué à 115200 baud
screen /dev/ttyUSB0 115200

# Quitter la connexion série sans la tuer : C-a d (détachement)
# Tuer définitivement : C-a k puis confirmer avec y

Logging automatique de session

Screen peut enregistrer tout ce qui s’affiche dans une fenêtre dans un fichier texte plat — pratique pour conserver une trace d’une opération critique :

# Démarrer une session avec logging activé dès le départ
screen -L -S session-loggee

# Le log est écrit dans ~/screenlog.0 par défaut
# Basculer le logging depuis l'intérieur : C-a H

# Pour spécifier le fichier de log dans ~/.screenrc :
# logfile /var/log/screen/screen-%S-%n.log

Personnalisation avec ~/.screenrc

Le fichier ~/.screenrc est lu au démarrage de chaque session screen. Un exemple minimaliste mais efficace pour l’administration système :

cat > ~/.screenrc << 'EOF'
# Désactiver le message de bienvenue
startup_message off

# Barre de statut en bas : hostname, liste des fenêtres, heure
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m/%d %{W}%c %{g}]'

# Taille de l'historique de défilement (lignes)
defscrollback 10000

# Encodage UTF-8
defutf8 on

# Désactiver le contrôle de flux (évite le freeze avec Ctrl+s)
defflow off

# Bell visuel plutôt qu'auditif
vbell on
EOF

La directive hardstatus affiche en permanence une barre en bas du terminal avec le nom du serveur, la liste des fenêtres et l’heure — indispensable dès qu’on gère plusieurs fenêtres simultanément. Pour partir d’une base existante :

cp /etc/screenrc ~/.screenrc

Screen vs tmux : que choisir ?

tmux est souvent présenté comme le successeur moderne de screen. En pratique, les deux outils répondent à des besoins légèrement différents :

  • Screen : présent par défaut sur de nombreux systèmes anciens, configuration minimale, natif pour les connexions série (/dev/ttyUSB0), partage multi-utilisateur sans plugin.
  • tmux : meilleure gestion des splits, support des sessions persistantes avec plugins (tmux-resurrect), syntaxe de configuration plus lisible, scripting plus puissant.

Pour les environnements de production hétérogènes où screen est pré-installé, ou pour les cas d’usage console série, screen reste le bon choix. Pour un setup quotidien sur un poste dédié, tmux offre davantage de confort à long terme.

À lire également

Références

Index complet

Tous les articles (58)

Date Article Tags
20/07/2026 SSL : Certificat Let's Encrypt avec Certbot sur Debian/Ubuntu (sans Snap) apache certbot certificat 20/07/2026 MariaDB : Tuning mariadb server sous debian / ubuntu et operation de maintenance sauvegarde/restauration debian innodb maintenance 20/07/2026 MariaDB : Mise en place d'une réplication Master → Slave base-de-données binlog debian 20/07/2026 OpenSVC : piloter des conteneurs LXC sur datasets ZFS avec snapshots et réplication sous Debian/Ubuntu conteneurs debian haute-disponibilité 20/07/2026 SCREEN : utilisation et cas d'usage des screens sous Linux administration bash debian 20/07/2026 EtherPAD : installation et configuration d'Etherpad collaboration debian editeur-collaboratif 20/07/2026 Wazuh 4.14 : déployer un SIEM/XDR open source sur Debian/Ubuntu compliance debian fim 20/07/2026 Incus 7.x : gérer conteneurs système et VMs sur Debian/Ubuntu — le successeur communautaire de LXD conteneurs debian incus 20/07/2026 Restic : sauvegardes incrémentielles chiffrées sur Debian et Ubuntu backup chiffrement debian 20/07/2026 Restic : sauvegardes chiffrées et dédupliquées sur Debian/Ubuntu automatisation backup chiffrement 30/06/2026 PHP : gérer plusieurs versions PHP-FPM avec les dépôts Sury sur Debian/Ubuntu administration apache debian 22/06/2026 OS : Cycle de vie LTS et mise à jour des distributions — apt dist-upgrade et do-release-upgrade sous Debian / Ubuntu apt cycle-de-vie debian 17/06/2026 APT : Guide complet de la gestion des paquets sous Debian et Ubuntu administration apt debian 17/06/2026 SHELL : Guide des commandes les plus usuelles et commandes couteau suisse awk bash commandes 17/06/2026 SUDO : implémentation et sécurisation des accès sur Debian/Ubuntu administration audit authentification 17/06/2026 ProFTPd : authentification MySQL centralisée, FTPs (SSL) et SFTP sur Debian/Ubuntu authentification debian ftp 09/06/2026 Fail2ban — configuration avancée et filtres personnalisés bruteforce debian fail2ban 07/06/2026 Docker : comment récupérer de l'espace disque cache conteneurs debian 07/06/2026 Graylog 7 — Centralisation et analyse de logs : l'alternative à ELK sur Debian/Ubuntu centralisation debian elk 07/06/2026 OpenZFS : tiering avec L2ARC et SLOG pour les workloads mixtes cache l2arc nvme 07/06/2026 Scripting Bash avancé — pièges, bonnes pratiques et optimisation automatisation bash bonnes-pratiques 07/06/2026 AppArmor sur Debian/Ubuntu : profils, modes et confinement applicatif apparmor audit confinement 07/06/2026 Durcissement SSH — au-delà des clés publiques 2fa authentification cryptographie 27/05/2026 LXD 6.x : orchestration de conteneurs Linux avec profils et clustering administration clustering conteneurs 27/05/2026 Keepalived — VIP flottante et load balancing sans matériel dédié debian failover haute-disponibilité 27/05/2026 Btrfs sur Linux — snapshots, sous-volumes et compression en pratique administration btrfs compression 21/05/2026 CVE-2026-42945 (NGINX Rift) : analyse et remédiation sur Debian/Ubuntu cve debian heap-overflow 21/05/2026 Tuning kernel Linux — paramètres sysctl essentiels pour la production debian kernel mémoire 21/05/2026 DRBD : réplication de blocs entre deux serveurs en temps réel cluster debian drbd 15/05/2026 CVE-2026-23918 — vulnérabilité Apache 2.4.66 : analyse et correctifs sur Debian/Ubuntu (hors Debian 11) apache cve debian 15/05/2026 CVE-2026-31431 (Copy Fail) — Analyse et remédiation sur Debian/Ubuntu algif_aead copy-fail cve 12/05/2026 Pacemaker et Corosync — cluster haute disponibilité Linux cluster corosync debian 12/05/2026 WireGuard : monter un VPN mesh entre plusieurs serveurs Linux chiffrement linux mesh 12/05/2026 Netdata — monitoring temps réel sans configuration complexe alertes dashboard linux 12/05/2026 nftables en pratique — remplacer iptables sur Debian/Ubuntu debian firewall iptables 12/05/2026 Podman : alternative rootless à Docker — installation et migration conteneurs docker kubernetes 02/05/2026 Prometheus et Grafana sur Debian — installation, configuration et dashboards pratiques alertmanager dashboard debian 02/05/2026 Ansible : automatiser la gestion de serveurs Linux avec des playbooks administration ansible automation 28/04/2026 ZFS sur Linux : snapshots, clones et RAID-Z en pratique administration compression filesystem 28/04/2026 eBPF sur Linux : observabilité et traçage kernel avec bpftrace et BCC bcc bpftrace diagnostic 23/04/2026 Analyse de la mémoire sur Linux — vmstat, free, smem diagnostic mémoire monitoring 23/04/2026 Sécurité Linux — Firewall iptables et nftables firewall iptables nftables 23/04/2026 ZFS sur Linux — Installation et gestion avancée administration filesystem stockage 23/04/2026 Gestion des services avec systemd sur Debian et Ubuntu administration debian services 23/04/2026 Gestion des ressources cgroups v1/v2 avec LXC cgroups conteneurs lxc 23/04/2026 Centralisation logs avec ELK Stack — Elasticsearch, Kibana, Filebeat elasticsearch elk filebeat 23/04/2026 Supervision avec Zabbix 7.0 LTS sur Debian/Ubuntu debian monitoring supervision 23/04/2026 Plusieurs versions PHP-FPM sur Apache Debian/Ubuntu apache debian php-fpm 23/04/2026 Sécurisation avancée PHP-FPM — Multi-VirtualHosts Apache/Nginx apache nginx php-fpm 23/04/2026 Optimisation PHP-FPM — Guide de tuning d'un pool optimisation performance php-fpm 29/07/2025 Docker sur Debian/Ubuntu : Installation, Configuration et Utilisation conteneurs debian docker 03/07/2025 Serveur VPN WireGuard sous linux réseau sécurité vpn 03/07/2025 Authentification par clé publique sur un serveur SSH authentification cryptographie sécurité 27/06/2025 Surveillance et diagnostic d’un serveur Linux avec vmstat, iotop et htop diagnostic htop monitoring 27/06/2025 Mémoire : Utilisation des Huge Pages et implémentation hugepages mémoire noyau 27/06/2025 Mémoire Swap et paramétrage swappiness mémoire noyau performance 18/06/2025 Installation et Configuration des Conteneurs LXC sur Linux administration conteneurs lxc 18/06/2025 Gestion des journaux avec syslog et journalctl administration journalctl logs