Screen

Screen (site du projet) est un multiplexeur de terminaux. Il permet de créer et d'accèder à des sessions sur un hôte distant.
L'avantage par rapport à l'utilisation d'un simple terminal à distance est qu'il s'exécute sur l'hôte et continue donc sa/ses tâche(s) même si le client n'est plus connecté (ou s'il perd temporairement sa connexion).
De plus, avec un seul processus Screen, un client peut créer plusieur fenêtre (numérotées ou nommées) et naviguer entre chacune très simplement, ce qui évite d'avoir plusieur fenêtres coté client (et donc plusieurs connexions).

Principe de fonctionnement

Le fonctionnement de screen est assez simple:
- Un client se connecte à un hôte, et créé un screen
- Une fenêtre (= terminal) est automatiquement générée dans ce screen et le client se retrouve dedans
--> A ce moment, le screen est dit rattaché puisqu'au moins un client l'utilise
- Le client peut créer une ou plusieurs nouvelles fenêtres, naviguer entre elles, lancer des processus dans chacune, etc...
- Le client peut également quitter le screen (sans l'arrêter) ou subir un déconnexion involontaire
--> A ce moment, le screen est dit détaché puisqu'aucun client ne l'utilise
- Le client peut alors revenir sur l'hôte, créer un nouveau screen, ou reprendre (rattacher) le screen précédent

Quelques commandes basiques

Liste les screen en cours

$ screen -ls
__Cette commande affiche également pour chaque screen si celui-ci est rattaché ou détaché

Créer un screen:

$ screen -S {nom_du_screen}

Rattacher un screen

$ screen -r {nom_du_screen}

Forcer le détachement d'un screen

$ screen -d {nom_du_screen}

Récupérer un screen attaché

$ screen -d -r {nom_du_screen}

Raccourcis dans un screen

La plupart des raccourcis se font par la combinaison de touches CTRL+a + {une autre touche}

Créer une nouvelle fenêtre

CTRL+a + c

Renomer la fenêtre courante

CTRL+a + A

Afficher la liste des fenêtres

CTRL+a + "
__Vous pouvez naviguer entre les fenêtre à partir de cet affichage

Changer de fenêtre:

CTRL+a + {numéro_de_la_fenêtre}
__La première fenêtre porte le numéro 0

Switcher entre la fenêtre courante et la précédente affichée:

CTRL+a + CTRL+a

En peu plus loin

Les fenêtres sont paramètrables. Ci-après un exemple de fichier de configuration :
~/.screenrc
# decommenter si t'es en UTF-8
defutf8 on
defbce on
vbell off
startup_message off
defscrollback 10000
altscreen on

hardstatus off
hardstatus alwayslastline
hardstatus string '%{= kG}%H %=%{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{B}%c'

Update (31/12/11) - Quelques ajouts:

Créer une fenêtre dans la fenêtre courante (écran partagé en 2, répétable plusieurs fois):

CTRL+a + S

Se déplacer entre plusieurs fenêtres:

CTRL+a + TAB

Récupérer un bash dans une fenêtre créée:

CTRL+a + c

Autoriser la multisession sur un screen:

CTRL+a + : multiuser on
CTRL+a + : acladd user (pour autoriser le user à rejoindre le screen)

Rejoindre un screen sur un autre session:

screen -x user/

La discussion continue ailleurs

URL de rétrolien : http://www.leslamas.net/index.php?trackback/17

Fil des commentaires de ce billet