Screen : Précis et concis
Par Tin le mardi, août 8 2006, 10:49 - Lien permanent
Il est souvent fort utile de pouvoir se déconnecter d'un serveur sans avoir à killer toutes les commandes lancées. Imaginons que nous lançons la compilation d'un noyau linux sur un serveur distant, et que malheureusement le laptop qui nous sert de console arrive en fin de batterie. Nous avons alors comme choix que d'annuler notre compilation.
C'est là qu'intervient GNU Screen.
Mais kesako screen ? D'après le site officiel, la définition de screen est la suivante :
Screen is a full-screen window manager that multiplexes a physical terminal between several processes, typically interactive shells. Each virtual terminal provides the functions of the DEC VT100 terminal and, in addition, several control functions from the ANSI X3.64 (ISO 6429) and ISO 2022 standards (e.g., insert/delete line and support for multiple character sets). There is a scrollback history buffer for each virtual terminal and a copy-and-paste mechanism that allows the user to move text regions between windows. When screen is called, it creates a single window with a shell in it (or the specified command) and then gets out of your way so that you can use the program as you normally would. Then, at any time, you can create new (full-screen) windows with other programs in them (including more shells), kill the current window, view a list of the active windows, turn output logging on and off, copy text between windows, view the scrollback history, switch between windows, etc. All windows run their programs completely independent of each other. Programs continue to run when their window is currently not visible and even when the whole screen session is detached from the users terminal.
En résumé, Screen permet d’ouvrir plusieurs terminaux dans une même console, de les récupérer plus tard en les "détachant" et en les "attachant".
Voici donc une liste des commandes les plus utiles[1] :
- Créer un nouveau terminal : C-a c
- Terminal suivant : C-a n
- Terminal précédent : C-a p
- Repérage du terminal courant, avec le titre du terminal entre parenthèse : C-a N
- Aller au terminal n[2] : C-a n
- Affichage de la liste des terminaux[3] : C-a "
- Visualiser la liste des terminaux de manière non interactive : C-a w
- Renommer le terminal courant[4] : C-a A
- Fermer un terminal : C-a k ou C-a K[5]
- Se détacher de screen : C-a d
- Se rattacher à screen : $screen -rd
- Activation/désactivation du monitoring : C-a M
- Activation/désactivation du monitoring silence : C-a _
- Voir l’état du monitoring (activé ou pas activé) : C-a m
- Fermer toutes les fenêtres et quitter screen[6] : __C-a __
- Suspendre screen[7] : C-a z ou C-a Z
- Verrouiller screen : C-a x
- Partager la fenêtre en deux[8] : C-a S
- Aide en ligne : C-a ?
- Utiliser le whiteboard : screen -x[9]
Exemple d'utilisation du monitoring :
- Imaginons que nous ayons trois terminaux, dans le premier la compilation du noyau linux, il suffit alors d'un C-a _ pour activer le monitoring silence. C'est à dire qu'il nous enverra un signal lorsqu'il n'y aura plus d'activité, donc quand la compilation sera terminée.
- Dans un autre terminal, on lance un script qui annalyse les logs en temps réels et affiche un message lorsque qu'un certain pattern est détecté. On déclenche le monitoring avec C-a M et cela enverra un message lors de la détection d'une activité sur le terminal.
- Tous les messages seront renvoyés sur le terminal qui se trouvera en premier plan, c'est à dire celui sur lequel nous travaillons.
Notes
[1] "C-" signifie la touche CTRL du clavier, donc C-a veut dire appuyer sur CTRL et A simultanément
[2] n est ici un chiffre
[3] On navigue dans la liste à l’aide des touches haut et bas, on sélectionne un terminal avec la touche Entrée
[4] Un appui sur Entrée sert à valider
[5] Une confirmation est demandée. Tout programme en cours dans ce terminal sera arrêté
[6] Une confirmation est demandée
[7] on ne perd pas les terminaux ; les programmes sont arrêtés
[8] Pour circuler entre les fenêtres C-a tab et pour fermer le split C-a X
[9] Le deuxième utilisateur doit se connecter sous le même compte que le premier qui a lancé le screen principal
Commentaires