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 ?
- Persistance des sessions : Laissez des processus tourner en arrière-plan et reconnectez-vous plus tard
- Multiplexage : Gérez plusieurs terminaux dans une seule fenêtre
- Partage d’écran : Plusieurs personnes peuvent se connecter à la même session
- 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 :
cs7,cs8 - 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
