GNU Screen
By Geoffrey on Thursday 1 April 2004, 20:40 - Ego - Permalink
Ce billet est une traduction d'un article que j'ai trouvé sur kuro5hin. Ayant trouvé l'article très interressant, et me disant que putain faudrait que je mette du stuff utile sur digital fashion un jour, j'ai contacté l'auteur qui s'est empressé de me donner l'autorisation de traduire et publier son article sur mon blog, ainsi qu'une version plus actuelle de l'article sur son site. C'est cette version que je vous livre ici traduite. C'est ma première vraie traduction, donc soyez indulgent merci :) si vous rencontrez des fautes d'orthographe, de style, ou de tournure n'hésitez pas à le signaler dans les commentaires, je corrigerais en conséquence.
Je tiens à remercier l'auteur, Jonathan McPherson, pour avoir publié un si bon article et pour m'avoir autorisé à le traduire et à le publier, ainsi que Renaud Littolff, pour la relecture.
Voilà, bonne lecture.
Cet article est d'abord paru quand je l'ai écris pour kuro5hin. Si vous voulez lire la version originale de l'article avec des commentaires contenant des astuces utiles sur Screen, il est ici, archivé sur Kuro5hin.
La plupart des systèmes d'exploitations modernes basés sur Unix (par exemple Linux, MacOS X, et BSD) sont livrés avec un petit utilitaire en mode console appelé GNU Screen. C'est un outil puissant entre les mains d'un guerrier de la ligne de commande, un véritable couteau suisse de l'interaction homme-ordinateur en mode console.
Cet utilitaire, bien que d'une utilité considérable, reste utilisé par très peu de personnes. Pourquoi ? Peu de gens en connaissent seulement l'existence, et ceux-là comprennent rarement les problèmes qu'il résoud. Dans cet article, j'expliquerais ce que screen fait pour vous, et fournirais un jeu de commandes pour accomplir des tâches basiques avec screen. Je m'adresse ici à ceux qui sont compétents avec la ligne de commande mais qui n'ont peu ou pas d'expérience avec screen lui même.
Ce que screen fait
Screen peut-être décrit comme un multiplexeur de terminal. En l'utilisant, vous pouvez executer toutes les applications en mode console -- commandes de shell interactives, applications basées sur curses, éditeurs de textes, etc. -- que vous voulez dans un seul terminal. C'est cela qui accroche la plupart des utilisateurs de screen. J'avais l'habitude de lancer une demi-douzaine de terminaux quand je me connectais à ma machine: j'en voulais un pour lire mes e-mails, un pour éditer mon code, un pour compiler mon code, un pour mon lecteur de news, un pour un shell sur mon hébergeur, et ainsi de suite. Maintenant, je lance un terminal et execute screen à l'intérieur. Problème résolu.
L'autre fonctionnalitée cool de screen est sa capacité à détacher le terminal des programmes executés. Cela signifie que vous pouvez utiliser screen pour laisser tourner les programmes après avoir fermé accidentellement le terminal, ou même après vous être déconnecté et, plus tard, reprendre là où vous en étiez. Cela signifie que le concept de session dans laquelle vous executé des programmes est une entité flottant librement que vous pouvez attacher à n'importe quel terminal depuis n'importe où, ou aucun terminal si vous le voulez.
Débuter avec screen: lancer des programmes et permutage de fenêtres
Lancez screen en tapant screen dans votre shell preferré. Vous serez probablement accueilli par un message de bienvenue. Quittez le message de bienvenue et vous obtiendrez un prompt shell, qui ressemble beaucoup à ce que vous aviez avant de lancer screen. Que s'est-il passé ?
Chaque programme qui tourne dans screen s'execute dans une fenêtre, et chaque fenêtre est identifié par un numéro unique. Screen a créé une nouvelle fenêtre, l'a numérotée 0, et a lancé un shell a l'intérieur. Tapez quelque chose dans votre nouvelle fenêtre pour pouvoir la reconnaître quand vous y repasserez plus tard.
Maintenant créez une nouvelle fenêtre; ce sera la fenêtre 1. Pour cela, tapez C-a c; c'est à dire, tapez Ctrl-a puis tapez c (mnemotechnique:Create)
Maintenant que vous avez deux fenêtres, essayez de basculer de l'une à l'autre. Pour cela, tapez C-a C-a, ce qui vous fera basculer à la fenêtre que vous utilisez avant celle en cours. D'autres méthodes de basculement utiles dont vous aurez besoin si vous comptez lancer plus de deux programmes:
- Utilisez C-a n et C-a p pour basculer respectivement vers la fenêtre suivante et précédente, par numéro.
- Utilisez C-a N, où N est un numéro de 0 à 9, pour basculer vers la fenêtre correspondante.
- Utilisez C-a " pour avoir une liste des fenêtres. Vous pouvez naviguer dans cette liste avec les flèches (ou en style vi, avec j et k), et activer une fenêtre en la mettant en surbrillance et en pressant Entrée. C-a w vous donnera une petite liste non interactive des fenêtres.
Détacher et réattacher: la magie du découplage de terminal
Si vous avez effectuer l'exercice ci-dessus, vous avez créer une session screen. Vous pouvez vous détacher de cette session en pressant C-a d. Vous pouvez aussi vous détacher juste en fermant l'émulateur de terminal qui contient la session. Cependant, gardez à l'esprit qu'aucune de ces manipulations ne termine votre session. Tout ce qu'elles font, c'est de détacher votre session du terminal courant. Tous les programmes qui sont lancés sous screen tournent encore. Vraiment.
Essayez: fermez l'émulateur de terminal que vous utilisiez pour l'exercice ci-dessus. Puis, si vous le désirez, déloguez vous et reloguez vous. Démarrez un nouvel émulateur de terminal, et tapez screen -r (r pour reattach). Vous serez exactement là vous en étiez quand vous avez détaché la session.
Vous pouvez surement imaginer moultes utilisations interressantes à cela. Vous pouvez lancer tous vos programmes console preferrés une fois et les laisser tourner dans une session screen persistante. Certaines personnes ont des uptime de screen de plusieurs mois.
Un autre d'exemple d'utilisation est d'avoir un bureau distant. Vous pouvez détacher une session au travail, vous vous connecter à la machine depuis chez vous et réattacher la session. Très très pratique. Avec un peu de pratique, vous pouvez même avoir plusieurs terminaux attachés à la même session, très utile pour le travail collaboratif et les rencontres.
Copier, coller, et remonter dans le buffer
Screen se souvient d'un nombre configurable de lignes de buffer, et vous en aurez besoin car vous ne pourrez pas utiliser les fonctionnalités de défilement de votre émulateur de terminal en utilisant screen. Vous pouvez accéder au buffer en vous mettant en mode copie (Copy Mode), en tapant C-a [. Vous pouvez marquer du texte n'importe où dans le buffer et le coller avec C-a ]. Screen est aussi capable d'écrire des fichiers de log, mais ceci dépasse le cadre de ce tutoriel.
Surveiller le silence et l'activité
Un des désavantage de faire tourner plusieurs programmes dans screen est que vous ne pouvez pas garder un oeil sur tous en même temps, puisqu'en général vous ne pouvez en voir qu'un seul à la fois (En fait, vous pouvez découper l'écran et voir plusieurs programmes à la fois, mais c'est un sujet avancé qui dépasse le cadre de ce tutoriel). Pour aider à atténuer ce problème, screen possède une fonctionnalité qui permet de surveiller le silence d'une fenêtre -- utile pour savoir quand une compilation est terminée par exemple -- ou son activité -- utile pour savoir quand quelqu'un parle finalement dans votre channel IRC preferré par exemple.
Pour commencer ou arrêter de surveiller une fenêtre pour un silence de 30 secondes, tapez C-a _; pour commencer ou arrêter de surveiller l'activité d'une fenêtre, tapez C-a M.
Le faire partir
Comme vous l'avez vu dans la section sur le déttachement et le réattachement, screen n'est pas facile à tuer. Vous ne pouvez pas juste fermer le terminal qui le contient (En fait vous pouvez, mais tous les programmes tournent encore sur votre système, prêts a être réattachés).
A ma connaissance, le seul moyen de quitter screen en douceur (cad sans envoyer de méchants signaux aux processus qui ne méritent pas ça) est de fermer chaque fenêtre de screen. Quittez tous les programmes ou shells qui tournent dans une fenêtre, et elle se fermera. Quand le dernier programme qui tourne dans screen est terminé, screen lui même se termine. Vous pouvez forcer l'arret de screen avec C-a C-_, mais je ne vous le recommande pas.
Autres trucs
Screen est capable de bien plus que ce que j'ai décris ci-dessus, mais c'est assez pour que vous débutiez. Vous pouvez taper C-a ? pour obtenir une liste laconique des commandes disponibles quand vous êtes sous screen. La page man de screen contient pas mal d'informations aussi. Et voilà quelques ressources web si vous avez des questions:
Yahoo GNU Screen Group
Une mailing-list à traffic relativement élevé pour screen. Beaucoup de personnes expérimentées trainent dessus.
La page screen de Sven Guckes
Une autre vue d'ensemble; un peu plus laconique que celle ci.
La page officielle de screen
Pas besoin d'explications. Les détails sont étonnemment clairsemés.
La page de manuel de screen
Formattée agréablement et divisée en sections. Bonne référence. N'oubliez pas de voir les sections sur .screenrc pour customiser screen.
Screen FAQ
Pas pour débutant, mais une bonne ressource pour régler les problèmes.
Comments
Merci pour votre traduction qui est très bien. Cependant, attention au franglais !!!! e-mail = courriel lecteur de news = lecteur de nouvelles shell = interpréteur de commandes "déloguez / "reloguez" = clôturez votre session / (ré)identifiez "uptime de screen de plusieurs mois" = "screen qui est en exécution depuis plusieurs mois" buffer = tampon log = journaux channel IRC = canal IRC ou mieux salon de discussion IRC page man = manuel mailing-list = liste de diffusion "customiser" = personnaliser !!
Ne pas oublier non plus qu'au futur, les verbes ne prennent pas de s à la première personne sinon, c'est du conditionnel. Aussi, "préféré" n'a pas deux R. Quelqu'autres petites fautes d'accord / de conjugaison que je n'ai pas noté par manque de temps. Bon courage
ouais pi y'a aussi screen => écran qu'il faut traduire... (¬¬)
Au sujet du franglais ... si tu es blege ... use et abuse du franglais. Si tu es français tu peux tenir compte de la remarque ... mais c'est moins gai à lire ;-)
Y en a qui ont du temps à perdre avec les langues...
Croyez-vous pas qu'il est déjà très bien de partager (shared) nos connaissances sans se faire chier à savoir s'il parle bien la langue french... Un québecois...
A parce que c'est du francais le quebecois? p'tain, j'ai toujours cru que c'était une langue à part moi, tabernac' (oui, elle était facile... dsl... oui je sors... par là? ah non par là... bonne journée...)
Dans mes propos, je m'adresse surtout à la secte RAurélien...
huhu :)
moi je pense surtout qu'on a des mots (qu'ils soient français ou non) connus et reconnus par tous pour désigner certaines choses et qu'il me semblerait stupide d'en utiliser d'autre (jamais je ne penserais a dire "interpéteur de commande" pour un shell par exemple)
Enfin quelqu'un qui me comprend. Es-tu quebecois aussi ou est-ce que tu as simplement une bonne ouverture d'esprit???
il parait que j'ai un égo démesuré, mais je ne suis pas quebecois, alors ni l'un ni l'autre ;)
Excellent cet article! je ne connaissais pas screen et ça me rend bien service maintenant. Merci!
Super article .
Ah tiens j'ai fais sensiblement pareil + video , si y'en a qui sont intéressé ca se passe là sur mon weblog.
Screen c'est magique.
Au fait mirmo, tu repasses quand sur taverne ? :)
Pour fermer proprement et rapidement screen, il faut utiliser le raccourci C-a \ et répondre oui à la question.
Belle traduction.
Au début c'est pas évident de prendre en main screen mais une fois qu'on a mémorisé les 3/4 raccourcis important , c'est que du bonheur :-à