This is an old revision of the document!
Table of Contents
Screen
Présentation
Screen est un gestionnaire de terminal en mode texte ; il permet, dans un terminal, de créer de nouvelles sessions qu'on pourra quitter, puis récupérer dans l'état ou on l'a laissé. On peut par exemple ouvrir un irssi dans un terminal, se déconnecter, puis récupérer la session en se reconnectant.
NB : Il existe une version améliorée de screen (avec un menu de configuration notamment) nommée byobu.
Utilisation
On installe et on lance screen :
aptitude install screen screen
Dans le terminal qu'on vient d'ouvrir, on lance un anodin
echo test test
On va ensuite détacher la console avec la combinaison ctrl+a
puis d
; on va donc revenir à la console d'où on a lancer screen.
Plus tard on décide de récupérer (rattacher) notre screen :
screen -r
On récupère ainsi l'état dans lequel on l'avait laissé.
On peut également créer d'autres terminaux virtuels ; quand on est dans screen, faire un ctrl+a
et c
. On passe alors de l'un à l'autre avec ctrl+a
et n
(next) ou encore ctrl+a
et p
(previous). ctrl+a
ctrl+a
permet de revenir à l'ancien terminal virtuel. Pour fermer une session screen : Ctrl+a d
(detach).
Pour la rejoindre plus tard : screen -x
ou screen -r
. S'il en existe plusieurs, screen -r
affichera la liste et il faudra ajouter l'ID de la session à la suite :
screen -r There are several suitable screens on: 314..soekris-01 (Detached) 9364..soekris-01 (Detached) Type "screen [-d] -r [pid.]tty.host" to resume one of them. screen -r 314..soekris-01
Sinon, pour simplement lister les sessions existantes : screen -ls
Pour lancer un script dans un screen au démarrage par exemple, on utilise :
screen -d -m script.sh
pour créer une nouvelle session sans l'attacher.
Combinaisons de touches
Pour afficher les raccourcis courants, qui sont modifiables et dépendent de la version de screen, appuyer sur la touche de préfixe Ctrl+a
suivie de ?
.
Une fois screen lancé :
c
: créer une nouvelle fenêtre (nouveau terminal)k
: killer le terminal courant (une confirmation vous est demandée (y/n))n
(next) : se déplacer vers le terminal suivantp
(previous) : se déplacer vers le terminal précédent<nb>
: se déplacer vers le terminal <nb>, avec <nb> son numéro (0, 1, …)“
: voir la liste des terminaux ouvertsctrl+a
: sélectionner la dernière fenêtre consultéeCtrl+<space>
: sélectionner la prochaine fenêtreA
: pour renommer le titre du terminal courantctrl+x
: verrouiller la session screen. En fonction de votre implémentation de screen :- soit le mdp de votre utilisateur vous sera demandé pour rouvrir la session (e.g. sous Debian);
- soit il demande un mdp avant de la verrouiller, qu'il faudra redonner pour la rouvrir (e.g. sous macOSX)
F
: rafraîchir la fenêtre
Diviser la fenêtre (split)
Plutôt que d'avoir un terminal par écran, on peut agencer l'affichage des terminaux en divisant l'écran en panneaux/régions, pour en afficher plusieurs ; mais tous les terminaux sont accessibles dans chaque panneau.
Pour diviser la fenêtre : Ctrl+a
suivi de :
S
pour diviser l'écran horizontalement|
pour diviser l'écran verticalement
Autres raccourcis liés au split :
X
: fermer le panneau (split) courant<tab>
pour passer de l'un à l'autre panneauq
: afficher les numéros sur chaque panneau
Configuration
Le fichier de configuration se nomme .screenrc
, que l'on peut placer dans /etc
ou ~
.
Pour afficher une barre de statut :
hardstatus alwayslastline "%d/%m/%Y [%c] | %w"
Pour éviter le message au lancement :
startup_message off
Annexes
Exemple de template
# /etc/screenrc startup_message off deflogin on vbell on vbell_msg " Wuff ---- Wuff!! " defscrollback 1024 bind ^k bind ^\ bind \\ quit bind K kill bind I login on bind O login off bind } history termcapinfo vt100 dl=5\E[M hardstatus off termcapinfo xterm*|rxvt*|kterm*|Eterm* hs:ts=\E]0;:fs=\007:ds=\E]0;\007 hardstatus alwayslastline "%-w%{.BW}%n %t%{-}%+w %= %l | %d/%m/%y %c" termcapinfo xterm*|linux*|rxvt*|Eterm* OP termcapinfo xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l' # ~/.screenrc defscrollback 4096 startup_message off caption always "%{bw}%H%{g} |%c %{y}%d.%m.%Y%{k} | %?%-Lw%?%{+b wk}%n*%f %t%?(%u)%?%{-b kw}%?%+Lw%? | %{-b rw} Load: %l %{k}"