Aller au contenu

Screen - L'écran dans l'écran

Screen est un multiplexeur de terminaux... Autrement dit un émulateur de terminaux.

Il permet notamment de se déconnecter d'un serveur à un endroit donné pour réouvrir sa session à un autre endroit, sans quitter les commandes lancées car elles sont contenues dans des terminaux virtuels lancés par screen.

Commandes les plus courantes

Créer une session nommée

screen -S MA_SESSION_1

Se détacher de la session

Cela permet de fermer sa session ouverte sur un serveur tout en laissant tourner la session Screen dans une tâche sur le serveur. On pourra s'y rattacher ultérieurement et retrouver la session dans l'état où on l'avait laissée.

Ctrl+A et ensuite D

Se rattacher à une session

screen -r MA_SESSION_1

Lister les sessions existantes

screen -ls

Personnaliser Screen

Screen va chercher ses paramètres d'une part dans le ficher /etc/screenrc et d'autre part les réglages propres à l'utilisateur dans le fichier ~/.screenrc.

Exemple de fichier .screenrc personnalisé :

# GNU Screen - main configuration file
# All other .screenrc files will source this file to inherit settings.
# Author: Christian Wills - cwills.sys@gmail.com
# Allow bold colors - necessary for some reason
attrcolor b ".I"

# Tell screen how to set colors. AB = background, AF=foreground
termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'

# Enables use of shift-PgUp and shift-PgDn
termcapinfo xterm|xterms|xs|rxvt ti@:te@

# Erase background with current bg color
defbce "on"

# Enable 256 color term
term xterm-256color

# Cache 30000 lines for scroll back
defscrollback 30000

hardstatus alwayslastline

# Very nice tabbed colored hardstatus line
hardstatus string '%{= Kd} %{= Kd}%-w%{= Kr}[%{= KW}%n %t%{= Kr}]%{= Kd}%+w %-= %{KG} %H%{KW}'

# Hide hardstatus: ctrl-a f
bind f eval "hardstatus ignore"

# Show hardstatus: ctrl-a F
bind F eval "hardstatus alwayslastline"
startup_message off
altscreen on
windowlist string "%4n %h%=%f"
shell -${SHELL}
pow_detach_msg "Screen session for \${LOGNAME} \$:cr:\$:nl:ended"
logfile "$HOME/.log/screen.%n.%Y-%m-%d"

Fractionner le terminal en plusieurs fenêtres

Ctrl+A puis C : Create a new window (with shell).
Ctrl+A puis " : List all windows.
Ctrl+A puis 0 : Switch to window 0 (by number).
Ctrl+A puis A : Rename the current window.
Ctrl+A puis S : Split current region horizontally into two regions.
Ctrl+A puis | : Split current region vertically into two regions.
Ctrl+A puis Tab : Switch the input focus to the next region.
Ctrl+A puis Ctrl+A : Toggle between the current and previous windows
Ctrl+A puis Q : Close all regions but the current one.
Ctrl+A puis X : Close the current region

Exemple complet

  • Créer une session screen nommé ma_session : bash screen -S ma_session

  • Ouvrir 4 fenêtres dans la session : Ctrl+A puis C 4 fois de suite.

  • Fractionner l'écran en 2 horizontalement : Ctrl+A puis S

  • Fractionner la moitié supérieur de l'écran en 2 : Ctrl+A puis |

  • Se déplacer dans la partie inférieur de l'écran : Ctrl+A puis Tab 2 fois.

  • Fractionner la moitié inférieur de l'écran en 2 : Ctrl+A puis |

  • Se déplacer dans la fraction d'écran souhaitée avec Ctrl+A puis Tab puis afficher une des fenêtres précédemment créées.

  • Pour sélectionner la fenêtre, faire Ctrl+A puis " afin d'afficher la liste des fenêtres ouvertes.