screen

Principe

C'est un multiplexeur de terminal capable d'émuler un VT100/ANSI. Ah. D'accord.

Pour simplifier, screen permet de lancer des terminaux virtuel dans un terminal "réel". Le gros avantage c'est qu'on peut quitter ces terminaux virtuels et y revenir après ! Ce qui signifie par exemple que si une coupure réseau se produit alors qu'on travaillait sur un terminal screen sur un serveur, on peut très bien y revenir après la panne comme s'il n'y avait pas eu de coupure. Rien que pour ça, screen est indispensable.

Utilisation

Extrait d'un (vieuuux) mail de JeanChristopheAndré :

On l'installe sur la machine cible (typiquement les serveurs) : aptitude install screen

Un exemple simple et typique :

  1. tu te connectes et tu lances tout de suite screen -DRR

  2. ça te crée un terminal virtuel dans lequel tu travailles comme sur un terminal quelconque ;
  3. tu lances par un exemple un gros FTP très long ;
  4. tu détaches le screen avec [ctrl]+[a] puis [ctrl]+[d] (ou bien tu attends une panne réseau mais c'est parfois plus long, parfois)

  5. tu te déconnectes et tu vas manger/dormir/travailler/boire/... ;
  6. tu te reconnectes et tu récupère ton screen avec screen -DRR ;

  7. tu retrouves ton FTP qui a avancé comme si tu étais resté connecté.

L'avantage majeur de screen pour la télé-maintenance c'est que si la connexion réseau (mais pas l'électricité bien sûr) coupe en plein milieu de ton travail, tu peux récupérer ton travail comme si rien ne s'était passé !!

Et je parle de télé-maintenance, mais tu peux aussi tout simplement l'utiliser sur ton serveur via la console locale.

Personnellement je l'utilise beaucoup pour pouvoir lancer des gros téléchargements sur l'Internet, ou encore pour gérer mon courrier de partout : je lance screen sur mon ordinateur de bureau et je lance mutt (dans le screen) pour lire mon courrier. Ainsi si je me déplace dans une autre implantation, je lock mon écran avant de partir et je peux me connecter à mon ordinateur de bureau à distance et récupérer le mutt (et tout le reste) en détachant/réattachant le screen de mon bureau sur une connexion SSH ... Idem à mon retour au bureau, je réattache le screen dans sa console/fenêtre d'origine.

Top génial cet outils ... C'est le VNC/TSE/... en mode texte des Unix !

Et je ne t'ai donné qu'un tout petit aperçu de ce qu'on peut faire avec ... Car tu peux ouvrir plusieurs terminaux virtuels dans une même session screen, les découper en hauteur/largeur, les partager avec une autre personne (accès concurrent), ... Top du top ! :)

Autre avantage : le mode multi-utilisateurs

Par exemple, pour éditer un même fichier à deux (et obliger un vi-phile à utiliser emacs :-D ). Ou bien pour aider quelqu'un à distance, sans passer son temps à lui demander "tu vois quoi, là, sur l'écran ?".

Comment faire ?

  1. Le premier utilisateur lance screen avec l'option -S : screen -S unnom

  2. Puis il active le mode multi-utilisateurs (en mode commande) : [C-A :]multiuser on

  3. Ensuite, il autorise un autre utilisateur à se connecter : [C-A :]addacl lautreutilisateur

  4. L'autre utilisateur n'a plus qu'à faire un screen -r premierutilisateur/unnom pour se connecter à la session en cours

Attention, pour faire cette dernière manipulation il faut que screen doit être installé en setuid... Ce que nous déconseillons fortement ! Une autre façon de faire est donc de passer via sudo :

Version avec sudo pour partager une console root :

  1. le premier lance sudo screen -S un_nom

  2. puis il active le mode multiuser : [C-A :]multiuser on et autorise un autre root à se connecter : [C-A :]addacl root

  3. l'autre utilisateur n'a plus qu'à faire un sudo screen -x un_nom pour se connecter à la session root en cours

Voir aussi : http://www.linux.com/article.pl?sid=06/08/14/1945249 pour quelques autres idées sur le mode multi-user

screen (dernière édition le 2008-02-21 22:09:52 par localhost)