Screen sous Linux : le couteau suisse des terminaux

Screen (ou GNU Screen) est un gestionnaire de fenêtres de terminal en mode texte qui vous permet de lancer et contrôler plusieurs sessions shell à partir d’une seule connexion.

À quoi ça sert ?

  1. Persistance des sessions : Laissez des processus tourner en arrière-plan et reconnectez-vous plus tard
  2. Multiplexage : Gérez plusieurs terminaux dans une seule fenêtre
  3. Partage d’écran : Plusieurs personnes peuvent se connecter à la même session
  4. Détachement : Quittez votre terminal sans tuer vos processus
# Lancer screen
screen

# Lancer avec un nom
screen -S nom_session

# Lister les sessions existantes
screen -ls

# Se reconnecter à une session
screen -r nom_session  # ou screen -r PID

# Se détacher d'une session
Ctrl + a, puis d

Commandes utiles (après avoir lancé screen)

  • Créer une nouvelle fenêtre : Ctrl + a, c
  • Passer à la fenêtre suivante : Ctrl + a, n
  • Passer à la fenêtre précédente : Ctrl + a, p
  • Lister les fenêtres : Ctrl + a, "
  • Kill une fenêtre : Ctrl + a, k
  • Mode copier/coller : Ctrl + a, [ (pour débuter la sélection)
  • Partager la session (2 utilisateurs) : screen -x nom_session
# Démarrez une session nommée
screen -S backup

# Lancez votre processus long (ex: sauvegarde)
tar -czf backup.tar.gz /dossier/

# Détachez-vous (Ctrl + a, d)

# Faites autre chose, revenez plus tard
screen -r backup

Screen pour communiquer avec des périphériques série

# Connexion basique
screen /dev/ttyUSB0 9600

# Avec contrôle de flux
screen /dev/ttyUSB0 9600,cs8,-ixon,-ixoff

# Spécifier le parity, stop bits
screen /dev/ttyUSB0 115200,cs8,parenb,-parodd,-cstopb

# Mode raw (important pour beaucoup d'appareils)
screen /dev/ttyUSB0 115200,cs8,-ixon,-ixoff,-icanon

Options principales :

  • Vitesse (baud rate) : 9600, 115200, etc.
  • Bits de données : cs7cs8
  • Parity : parenb (enable), -parodd (even), parodd (odd)
  • Stop bits : cstopb (2 bits), -cstopb (1 bit)
  • Contrôle de flux : ixon (software), crtscts (hardware)

Commandes utiles dans screen série :

# Pour quitter screen (sérial)
Ctrl + a, puis k, puis y
# ou
Ctrl + a, puis :quit

# Envoyer un caractère spécial
Ctrl + a, puis :send break  # Envoie un break