Screen, this saver

Je pensais inaugurer les premiers posts geek, mais malheureusement Jan m’a grillé la politesse :/ Néanmoins, je vais faire mon geek jusqu’au bout, et tout de même essayer de vous parler brièvement de screen, même si la meilleure solution reste tout de même RTFM !!

Je ne sais pas pour vous, mais quand j’étais à l’ISIMA, je n’étais pas une bête en système. Bien sûr, il y avait M. GOUINAUD qui nous expliquait que Le Système (enfin Unix, le seul vrai système hein) c’était bien, mais si mes souvenirs sont bons, c’était bien le seul à l’époque à le croire  :)

Plus tard, quand on arrive dans le monde du travail, on se trouve parfois dans des situations du style : “bon, je suis chez un client à X{X > 1000} km, faut que j’utilise le VPN de la boîte pour me connecter au LAN, puis en SSH au serveur de développement pour compiler la révision r42 de tel binaire, mais aussi faire des tests sur d’autres fichiers en modifiant telles options dans le code”.

Passons sous silence le passage avec le VPN et le SSH (on va dire que c’est la partie évidente) pour se focaliser sur ce qui est fait une fois connecté au LAN.
C’est là qu’intervient un utilitaire magique, la plupart du temps le bon réflexe en remote : screen.
Les premiers contacts sont du style “j’ai tapé screen dans mon shell, mais rien ne se passe“. Pas de panique ! Il suffit de taper C-a d et voir… Miracle, le terminal affiche “screen detached“. Que s’est-il passé ?

En fait le fait de taper screen créée un nouveau shell (ou session screen) totalement séparée de votre shell courant, que l’on peut détacher à souhait i.e., on sauvegarde l’état courant et on rend la main au shell de base, d’où le “screen detached“. Une fois détachée, on peut aussi récupérer sa session en l’état en tapant simplement dans son shell : screen -r .

Donc l’utilité en remote, c’est qu’une fois qu’on est connecté, on fait un petit “screen” des familles, qui permet, lorsqu’on se déconnecte (ou qu’on est déconnecté – ça arrive lorsque la connexion est merdique, hein), de sauvegarder sa session (historique, opérations en cours – type compilation, fichiers en cours d’édition, etc.). Mais ce n’est pas tout.

En tapant screen dans le nouveau shell généré par le screen précédent, cela créée une nouvelle session screen et deux choses sont à observer :

1) en tapant C-a A, on peut renommer la session screen (par défaut le nom c’est bash)

2) en tapant C-a “ , on peut voir la liste des sessions en cours dans le screen, repérées par leur nom (que l’on change grâce à l’étape précédente). On peut alors sélectionner  la session qui va bien avec les flèches haut et bas.

On peut donc avoir la compilation de la révision r42 dans une session, tout en éditant des fichiers dans l’autre, et ne pas se perdre entre l’un et l’autre grâce au nommage des sessions. Pour les fainéants, on peut rapidement switcher d’une session à la session précédente grâce à C-a C-a.

Résultat des courses : 1) + 2) = du multi-session simple en remote ! N’est-ce pas magique ?

C’est sûr, cet article est loin d’être exhaustif sur ce que peut permettre screen. J’espère néanmoins, au travers de cette illustration par l’exemple, qu’il vous donnera goût à cette commande Linux hélas trop souvent méconnue et délaissée dans les tréfonds du système.

Tags: , , , , ,

Ce billet a été posté par Emmanuel Peroumalnaik le 21 December 2009 à 0:01 et est classé dans Conseils, Expériences, PC-ride. Vous pouvez suivre chaque réponse à ce billet grace à RSS 2.0. Vous pouvez aussi laisser une réponse, ou un trackback depuis votre propre site.

4 Responses to “Screen, this saver”

  1. pizaninja Says:

    Pinaise, je n’ai rien compris. Tu peux nous refaire un scénario avec une connexion en ssh?

  2. Emmanuel Peroumalnaik Says:

    :/
    En fait, c’est juste pour dire que :
    – quand tu te connectes en ssh, tu fais un screen
    – avant de couper ton ssh, tu détaches le screen avec C-a d (sachant que pour moi, C = CTRL)
    – lors de ta prochaine connexion ssh, tu récupères ta session précédente en faisant un screen -r
    Après, en gros, screen te permet de gérer aussi plusieurs sessions…
    C’est vrai que ça manque peut être d’images, mais c’est que j’ai pas vraiment eu le temps pour ça.

  3. Crashouille Says:

    C’est très bien vu le lien subliminal sur Unix qui pointe vers Mac OS X :D Ce qui donne: “Mac OS X, le seul vrai système (d’exploitation)” ;)

  4. Shinkan Says:

    Exploitation dans le sens où on pompe le fric du client de manière industrielle par des procédés proches de ceux de l’exploitation d’une mine ?
    Follow the troll :D

Laisser un commentaire