Skip to content

GNU Screen ​

GNU Screen est un multiplexeur de terminal, l'ancêtre de tmux : il permet de lancer plusieurs sessions shell dans un seul terminal, de les détacher pour laisser des processus tourner en arrière-plan (particulièrement utile en SSH sur des connexions instables), puis de s'y rattacher plus tard. Ce mémo reprend l'essentiel des commandes, d'après ce gist.

Toutes les combinaisons de touches s'utilisent après le préfixe, par défaut Ctrl+a (noté préfixe ci-dessous). Pour envoyer un Ctrl+a littéral à l'application en cours, faire préfixe a.

Sessions ​

bash
screen                       # Lancer une nouvelle session
screen -S mysession          # Lancer une nouvelle session nommée
screen -ls                   # Lister les sessions actives
screen -r                    # Se rattacher à l'unique session détachée
screen -r mysession          # Se rattacher à une session précise
screen -x                    # Se rattacher à une session déjà attachée ailleurs (partage d'écran)
screen -d mysession          # Détacher une session depuis l'extérieur
screen -d -r mysession       # Détacher puis se rattacher immédiatement (utile si déjà attachée ailleurs)
screen -X -S mysession kill  # Terminer une session précise sans s'y attacher

Fenêtres ​

Une fenêtre correspond à un shell indépendant au sein de la session.

préfixe c            # Créer une nouvelle fenêtre
préfixe Ctrl+a       # Basculer vers la dernière fenêtre active
préfixe 0-9          # Aller à la fenêtre numéro 0-9
préfixe '            # Aller à une fenêtre par numéro ou par titre (saisi ensuite)
préfixe n ou espace  # Aller à la fenêtre suivante
préfixe p ou retour arrière  # Aller à la fenêtre précédente
préfixe "            # Afficher la liste des fenêtres et en choisir une
préfixe w            # Afficher la barre listant les fenêtres ouvertes
préfixe A            # Renommer la fenêtre courante
préfixe k            # Fermer (kill) la fenêtre courante

Divisions d'écran (régions) ​

préfixe S            # Diviser l'écran horizontalement (régions empilées)
préfixe |            # Diviser l'écran verticalement (régions côte à côte)
préfixe Tab          # Passer à la région suivante
préfixe X            # Fermer la région courante
préfixe Q            # Fermer toutes les régions sauf la courante

Une région ne montre qu'une fenêtre à la fois : après avoir créé une région, il faut y ouvrir ou y attacher une fenêtre avec préfixe c ou préfixe n/préfixe ".

Mode copie et défilement ​

préfixe [ ou préfixe Échap  # Entrer en mode copie/défilement
Ctrl+u                      # Défiler d'une demi-page vers le haut
Ctrl+d                      # Défiler d'une demi-page vers le bas
espace                      # Démarrer une sélection
Entrée                      # Copier la sélection et quitter le mode copie
Échap                       # Quitter le mode copie sans copier
préfixe ]                   # Coller le dernier contenu copié

Divers et utilitaires ​

préfixe Ctrl+l    # Redessiner l'écran courant
préfixe M         # Activer la surveillance d'activité sur la fenêtre courante
préfixe _         # Activer la surveillance de silence (alerte si plus aucune sortie)
préfixe Ctrl+v    # Insérer le prochain caractère littéralement (utile pour les non-ASCII)
préfixe x         # Verrouiller le terminal (protégé par mot de passe)
préfixe :         # Ouvrir la ligne de commande screen
préfixe H         # Activer/désactiver l'enregistrement de la sortie dans un fichier
préfixe ?         # Afficher l'aide (liste des raccourcis)
bash
:sessionname nom   # Renommer la session courante depuis la ligne de commande
:source ~/.screenrc  # Recharger la configuration

Quitter et détacher ​

préfixe d          # Détacher la session (les processus continuent de tourner)
préfixe D D        # Détacher toutes les fenêtres et quitter rapidement
préfixe Ctrl+\     # Forcer la fermeture de screen (avec confirmation)
préfixe : puis quit  # Quitter proprement toutes les fenêtres et la session

Configuration (~/.screenrc) ​

bash
# Désactiver le message de bienvenue au démarrage
startup_message off

# Augmenter la taille de l'historique de défilement
defscrollback 10000

# Activer une ligne de statut en bas d'écran (fenêtres, heure, hostname)
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}]'

# Changer le préfixe de Ctrl+a vers Ctrl+j (évite le conflit avec le "aller au début de ligne" du shell)
escape ^Jj

Aide-mémoire rapide ​

SituationCommande
Nouvelle session nomméescreen -S nom
Lister les sessionsscreen -ls
Se rattacherscreen -r nom
Se rattacher en forçant le détachement ailleursscreen -d -r nom
Se détacherpréfixe d
Terminer une session sans s'y attacherscreen -X -S nom kill
Nouvelle fenêtrepréfixe c
Basculer entre fenêtrespréfixe n / préfixe p
Lister les fenêtrespréfixe "
Diviser horizontalementpréfixe S
Diviser verticalementpréfixe |
Passer à la région suivantepréfixe Tab
Copier du textepréfixe [ puis sélection puis Entrée
Collerpréfixe ]
Envoyer un Ctrl+a littéralpréfixe a

Source : gist.github.com/jctosta

Publié sous lience MIT.