screen, le meilleur ami de l’administrateur linux

En effet, les interfaces graphiques n’ont pas toujours été présentes, surtout aux débuts de UNIX ou de Linux. Beaucoup d’outils développés durant les années 1980 étaient très puissants et le sont toujours. C’est le cas de GNU screen. Pour faire simple, dans firefox ou chrome vous avez plusieurs onglets ? Et bien screen fait quelque chose de similaire avec un terminal. Que vous ayez une interface graphique, ou pas. Au delà de ça, cet outil va vous permettre de laisser tourner des applications sur un serveur distant dit « headless » (sans interface graphique) et de paralléliser facilement les tâches : on lance une mise à jour dans un onglet, on en ouvre un autre pour installer quelque chose, dans un autre encore on lance l’utilitaire top…
Vous voulez découper votre terminal en plusieurs zones ? Screen sait le faire dans un terminal textuel, tout comme le terminal terminator le fait pour une interface graphique.

 

Vérification et installation si besoin

Dans un premier temps voyons si screen est présent dans votre installation :

feodor@logd:~$ screen -v
Screen version 4.05.00 (GNU) 10-Dec-16
feodor@logd:~$

### ou alors ###

feodor@logd:~$ apt-cache policy screen
screen:
 Installed: 4.5.0-6   # Ici apt nous indique la version installée si il y a
 Candidate: 4.5.0-6   # Alors que cette ligne nous indique la version disponible dans les dépôts
 Version table:
 *** 4.5.0-6 500
 500 http://ftp.fr.debian.org/debian stretch/main amd64 Packages
 100 /var/lib/dpkg/status
feodor@logd:~$

Si vous avez quelque chose comme ça, c’est bon il est présent. Si ce n’est pas le cas on l’installe :

apt-get install screen

 

Débuts et prise en main

De base, screen est assez peu convivial. Pire que ça, il n’y a aucune information sur les onglets déjà présents, sur la session en cours etc. Pour ma part je trouve ça assez peu ergonomique. C’est tout de même mieux ainsi :

Nous avons donc en bas, de gauche à droite : 3 onglets, respectivement title1 title2 et title3, blogz est le nom de ma session screen (utile pour identifier facilement les sessions) le pipe suivi de ziggy qui est le nom de ma machine, et enfin la date actuel.

Voici quelques lignes de configuration qui sont à mon sens essentielles.

deflogin on                           # permet d'avoir chaque onglet = un terminal
bell on                               # précise que l'on veut le transport du son pour le buzzer
bell_msg "OH ! WTF in window %n ?!"   # message affiché lorsqu'une autre fenêtre doit sonner
activity "%c activity -> %n%f %t^G"   # message particulier réservés aux fenêtres qui sont "monitorées"
silencewait 2                         # indique que je veux 2 secondes minimum entre chaque beep pour le monitoring
hardcopy_append on                    # indique que les captures d'écran (hardcopy) seront ajoutées au fichier de destination

caption always "%{wk}%?%-Lw%?%{kw}%n*%f %t%?(%u)%?%{wk}%?%+Lw %=%{wk}%S | %H %{yk}%D %{ck}%M%{wk} %{ck}%d %{gk}%c"

Pour ce qui est de savoir ce que ma ligne « caption always » donne, c’est la capture d’écran juste avant. La liste des variables est dans le manuel de screen. Inutile de réécrire quelque chose à ce sujet, la capture d’écran et ma config de « caption always » se suffisent à elles même. Ceci étant si quelqu’un a besoin de plus de précisions, posez moi vos questions dans les commentaires !
Puis il y a plus intéressant à présenter : les raccourcis indispensables.

 

Raccourcis screen indispensables

A mon sens le plus important dans screen, ses raccourcis. Globalement j’utilise souvent les mêmes, et deux ou trois commandes (car screen accepte certaines commandes via un interpréteur interne).
Petite convention de nommage, la combinaison « Contrôle a » sera écrite comme ceci : ^a

Lancement de screen avec un « screen -S session », le paramètre -S permet de nommer notre session. A noter qu’il n’est pas forcément nécessaire de relâcher la touche « Contrôle » pour enchaîner avec le second caratère.

### RACCOURCIS ###
^a + c           --> permet d'ouvrir un nouvel onglet
^a + A           --> renommer un onglet
^d               --> permet de fermer un onglet
^a + ^a          --> permet de d'alterner entre les deux derniers onglets
^a + espace      --> permet d'aller à l'onglet suivant, comme ^a + n ( n = next)
^a + backspace   --> permet d'aller à l'onglet précédent, comme ^a + p (p = previous)
^a + "           --> donne la liste de tous les onglets (pratique si aucune barre de statuts
^a + x           --> verrouille votre session screen
^a + h           --> fait une capture d'écran du terminal, dans un fichier texte "hardcopy.n"
^a + k           --> tue la fenêtre actuelle
^a + 0,1,2,3...  --> va à l'onglet 1,2,3...
^a + echap       --> permet d'entrer en mode copy et de naviguer dans l'historique de l'onglet
                     ou également ^a + [ pour entrer en copy mode
^a + ]           --> pour coller dans stdin le contenu de ce que l'on a pu copier précédemment
^a + g           --> activer ou désactiver le beep (change entre alerte auditive ou visuelle)
^a + S           --> couper (split) horizontalement screen
^a + |           --> couper (split) verticalement screen
^a + tab         --> aller à la région suivante
^a + X           --> détruire la région actuelle (la zone ou votre curseur se trouve)
^a + Q           --> détruire toutes les régions sauf la zone actuelle

### COMMANDES ### pour entrer en mode commande ^a + :
password         --> permet de définir un mot de passe pour protéger sa session.
                     (attention, à mon sens ce n'est pas possible de récupérer la session si on le perd :)
quit             --> ferme brutalement tous les onglets et quitte screen
kill             --> tue la fenêtre actuelle
reset            --> remet screen dans sa configuration de lancement
                     (pratique suite à des tests étranges, par exemple)
source ~/.screenrc  --> permet de refresh le fichier de configuration de votre screen sans quitter


Petite précision sur le mode copy : on se déplace avec les mêmes raccourcis que l’on trouve sur vim ou dans les pages de manuel :
j = vers le haut, k = vers le bas, h = vers la gauche, l = vers la droite. Et bien sur controle b ou controle f pour monter / descendre d’une page. Quand vous aurez atteint ce que vous désirez copier, il faudra appuyer sur espace pour commencer la sélection, et de nouveau appuyer sur espace pour copier la sélection dans le buffer de screen.

Lu 126 fois

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *