Screen
Utilisation basique
Lancement de l’application
Il existe plusieurs manières de lancer screen : soit en créant une nouvelle session du programme soit en en récupérant une existante. Voici une petite liste de paramètres utiles de la commande screen :
aucun paramètre lancer une nouvelle session de screen
-ls lister les sessions existantes avec leur identifiants
-r récupérer ("rattacher") une ancienne session (fonctionne uniquement s'il n'existe qu'une session)
-r identifiant rattacher une ancienne session par son identifiant
-S identifiant créer une nouvelle session en définissant son identifiant
Gestion des fenêtres dans une session
<ctrl-a> c créer une nouvelle fenêtre
<ctrl-a> <ctrl-p> revenir à la fenêtre précédente (dans l'ordre)
<ctrl-a> <ctrl-n> aller à la fenêtre suivante (dans l'ordre)
<ctrl-a> <ctrl-a> retour rapide à la fenêtre précédente
<ctrl-a> " afficher la liste des fenêtres existantes
<ctrl-a> ' aller à une fenêtre en spécifiant son nom ou numéro
<ctrl-a> A renommer la fenêtre actuelle (utile pour la commande ci-dessus)
<ctrl-a> k tuer (kill) une fenêtre (en cas de blocage)
Sortir d’une session
<ctrl-d> (ou exit) quitter screen (comme en Bash)
<ctrl-a> <ctrl-d> détacher l'application du terminal
<ctrl-a> D D détacher l'application du terminal et se délogger
<ctrl-a> <ctrl-\> tuer toutes les fenêtres et quitter l'application
Divers
<ctrl-a> ? afficher l'aide
<ctrl-a> C effacer le contenu de la fenêtre
<ctrl-a> <ctrl-x> verrouiller la session (mot de passe - shell - de l'utilisateur requis pour déverrouiller)
Trucs & astuces
Les directives suivantes sont à consigner dans le fichier de configuration
utilisateur ~/.screenrc
, ou dans /etc/screenrc
afin de leur donner une
portée globale au système.
Supprimer le message d’accueil au lancement de screen
startup_message off
Détacher automatiquement le screen en cas de coupure de connexion
autodetach on
Utiliser la séquence de commande dans une application/shell
Si vous avez besoin d’utiliser la séquence <ctrl-a>
dans une fenêtre -
typiquement, pour le raccourci clavier identique en Bash - deux solutions sont
possibles :
utiliser la séquence de commande littérale
<ctrl-a> a
modifier la séquence de commande en autre chose que
escape ^ww la séquence de commande est désormais <ctrl-w> (autre exemple : ^zz donnera <ctrl-z>, etc.)
Note : il est également possible de modifier cette directive lors de la création
d’une session avec l’option -e
(exemple : screen -e ^ww
)
Prendre une “capture d’écran” d’une fenêtre
<ctrl-a> h
ℹ️ Note : manipulation à effectuer dans une fenêtre, pas dans les fichiers de configuration.
Remonter dans l’historique (mode scrollback)
Il n’est pas possible de consulter l’affichage de commandes précédentes de la même manière qu’en console traditionnelle, il existe pour ce faire un mode dit “scrollback” :
<ctrl-a> [ passer en mode scrollback (fonctionne également avec <ctrl-a> <Echap>
Une fois en mode scrollback, vous pouvez remonter/redescendre dans l’historique
avec les flèches Haut/Bas
, ainsi que PageUp/PageDown
.
<Echap> quitter le mode scrollback
Faire des copier/coller
En mode “scrollback” vous pouvez remonter dans les lignes précédentes du buffer d’affichage de la fenêtre (manipulation à effectuer dans une fenêtre, pas dans les fichiers de configuration).
<ctrl-a> [ passer en mode scrollback : appuyez sur la touche <Espace> une première fois pour
commencer à sélectionner, sélectionnez votre texte et appuyez une deuxième fois pour copier en mémoire tampon.
<ctrl-a> ] coller le contenu de la mémoire tampon
ℹ️ Vous pouvez copier/coller entre plusieurs fenêtres également :)
Être averti de l’activité dans les autres fenêtres du screen
Avoir plusieurs fenêtres ouvertes en même temps c’est bien, mais on ne peut pas les regarder en même temps. La séquence suivante (dés)active la notification d’événements dans les autres fenêtres par un message dans la barre d’état :
<ctrl-a> M
Changer le dossier courant
<ctrl-a> :chdir /mon/nouveau/chemin
Exécuter une commande dans toutes les fenêtres d’un screen
Il peut être très pratique de pouvoir exécuter une même commande dans plusieurs
fenêtres d’une session screen, typiquement si vous avez une fenêtre ouverte sur
plusieurs machines d’un “cluster” à la manière d’un dsh
ou cluster-ssh
:
<ctrl-a> :at "#" stuff "unecommande^M"
ℹ️ Vous pouvez remplacer "#"
par \#
, et ^M
indique à screen qu’il doit
exécuter la commande (l’équivalent d’appuyer sur la toucher pour
exécuter une commande) : sans cela screen ne fera qu’écrire la ligne de commande
sans l’exécuter.
Il est également possible de spécifier une fenêtre dans laquelle exécuter la commande en précisant son numéro ou encore son nom, si vous l’avez renommée :
<ctrl-a> :at "2#" stuff "uname -a^M" exécute la commande "uname -a" dans la fenêtre n°2
<ctrl-a> :at "plop#" stuff "top^M" exécute la commande "top" dans la fenêtre nommée "plop"
Se connecter à un routeur ou un switch via le port série avec GNU Screen
Si vous n’avez pas de minicom
ou cu
sous la main, sachez que vous pouvez
utiliser screen pour vous logger à un routeur ou tout équipement doté d’un port
série (dit “null modem”). La syntaxe est screen <device modem> [vitesse]
, par
exemple :
screen /dev/ttyS0 9600
Remanier l’ordre des fenêtres
Afin de remanier l’ordre des fenêtres ouvertes dans une session, vous pouvez changer le numéro attribué à une fenêtre en utilisant la commande suivante (où X est un numéro) :
<ctrl-a> :number X