Je ne travaille pratiquement jamais directement sur ma machine, celle ci ne me sert d’ailleurs plus de terminal et de jukebox qu’autre chose.
J’ai donc besoin parfois de reprendre une session depuis un autre endroit sans perdre ce que je faisait avant (autrement dit reprendre mon travail là ou il en etait, sans devoir quitter les logiciels utilisés, par exemple, poursuivre la erdaction d’un mail ou retrouver ma session d’IRC sans en perdre une miette).
Pour cela screen a été LA solution à tous mes problèmes.
Je vais tenter de vos exposer dans cet article ce que je sais de screen (meme si la documentation fera cela beaucoup mieux que moi) et prenant un exemple concret.
Screen est un gestionnaire de consoles virtuelles. Il permet une fois lancé de créer dans la même consoles, plusieurs consoles virtuelles, de passer de l’une a l’autre, de les nommer, et surtout possède la fonction plus qu’interessante d’être détaché pour être rattaché plus tard.
Pour utiliser screen vous devez au préalable l’installer sur votre machine.
Les utilisateurs Debian utiliseront leurs Dpkg préféré :
apt-get install screen
Les utilisateurs de Redhat ou autre Mandrake préfèrerons eux utiliser le RPM concu a cet effet.
rpm -Uvh screen-3.9.11-3.i386.rpm
Enfin les puristes compilerons le code : screen-3.9.11.tar.gz
L’installation s’est bien passée, pas de pb de compilation ? parfait.
Nous pouvons passer a la phase d’utilisation de screen.
Pour commencer vous devez lancer le gestionnaire.
Pour cela vous dites a screen de se connecter :
[birdy@jessica] birdy $ screen -l
normalement vous ne devriez rien voir de plus flagrant qu’un écran vide :) si c’est le cas c’est que vous êtes bien connecté.
Nous allons maintenant commencer par créer un nouveau terminal. Screen Bind sa touche de contrôle par défaut sur le CTRL+A (cequi est pénible a force et peut être contourné)
Pour créer un nouveau term, tappez la combinaison suivante : CTRL+A c (c pour create)
Pareil ici rien de fulgurant. afin de vous permettre de voir qqch tappez ls par exemple..
vous venez de demander le ls du rep courant dans le terminal 2.
Bon maintenant regardons ce qui se passe dans le terminal 1. Pour cela, Tappez : CTRL+A [SPACE] cette action vous fait passer au terminal suivant (et CTRL+A [DELSPACE] vous permet de passer au term précédent).
vous pouvez donc passer d’un term a un autre de cette manière. Ainsi vous economisez les fenetres, les utilisateurs de Kterm ou autre gestionnaire de term de ce type ont l’habitude cliquer sur l’onglet du term, c’est a peu pres le meme principe).
Chaque terminal prenant également un numéro il est tt a fait possible de passer de l’un à l’autre en demandant son numéro, par exemple CTRL+A 1 appelera le premier term, et CTRL+A 4 le quatrième term.
Bien, maintenant que nous savons naviguer de l’un a l’autre nous allons passer a la notion de détachement et d’attachement.
Lorsque votre screen est actif, vous pouvez le détacher. Pour cela nous allons utiliser la combinaisons de touche suivante :
CTRL+A d
ceci devrait effacer le contenu de votre term, afficher ce qu’il y’avait dans le terminal ou vous avez lancé screen et faire apparaitre un message vous indiquant que votre screen est bien détaché comme ceci :
[birdy@jessica] birdy $ screen -l
[detached]
[birdy@jessica] birdy $
Votre session est donc bien détachée. Si vous regardez au niveau des processus vous vous rendrez compte que ceux ci ne se sont pourtant pas arrétés, par exemple sur ma machine un terminal virtuel tourne avec un client de courriel, le screen est bien détaché mais les processus tournent toujours :
birdy 5359 0.0 0.8 2964 1364 ? S 13:34 0:00 SCREEN -l
birdy 5360 0.0 1.0 3080 1672 pts/14 S 13:34 0:00 \_ /bin/bash
birdy 5374 1.6 1.0 3460 1680 pts/14 S 13:36 0:00 | \_ mutt
birdy 5365 0.0 1.0 3072 1644 pts/15 S 13:34 0:00 \_ /bin/bash
Par ailleurs on sait qu’un screen existe en demandant a screen quels sont les sessions actives :
[birdy@jessica] birdy $ screen -ls
There is a screen on:
5359.pts-7.jessica (Detached)
1 Socket in /var/run/screen/S-birdy.
[birdy@jessica] birdy
J’ai donc un screen actif (mais détaché) sur ma machine actuellement.
pour le rattacher, je vais utiliser la commande suivante : screen -dR, magiquement je retrouve tous mes terms.
Vous savez donc maintenant attacher/détacher un screen, créer de nouveaux terminaux.
Maintenant il ne vous reste plus qu’à l’utiliser.
Connectez vous sur une machine, lancer vos travaux dans un screen, détachez le screen, reconnectez vous sur cette machine depuis une autre machine et rattachez votre screen, magique non ? Non plutot pratique :)
Pas de panique, il est possible de dire a screen de binder sa touche de controle sur autre chose que la touche A.
Pour cela détachez le et tappez :
screen -e^Xx -dR pour que la touche de controle devienne X par exemple.
Pourquoi tant de haine ? pour tuer un term il suffit de dire a screen de le faire (CTRL+A K (majuscule) ou tout simplement de vous délogguer 5CTRL+D) comme sur un terminal normal.
Voila pour cette initiation, j’ajouterais d’autres choses comme comment nommer un term par ex plus tard.
Cette article est bien entendu ouvert à commentaires.
A mettre dans votre .screenrc :
hardstatus string "%r%c%k | %w% ? (%h)% ?"
hardstatus alwayslastline
ça ajoute une barre d’etat a la windows plus l’heure, vraiment c’est excellent.
Je préfère :
hardstatus alwayslastline
hardstatus string " %wb%-w%wr%n %t%-%+w %=%D %d %M %y %c "
Enfin, Control-Z est un raccourci heureux, puisqu’il devient complètement
inutile de passer un processus en tâche de fond.
question 1 :
il ne m est pas possible de faire un su - dans le screen, le login marche mais il n’arrive pas a lancer un bash c normal docteur ?
question 2 :
si ma connection ssh se fait killer sans que j’aie detache les screens, ca marche quand meme pour le reattacher ?
Concernant la question 1 non ce n’est pas normal, peut tu nous donner quelques idées de ce que donne les logs ?
Concernant la question 2 oui si ta connexion SSH meurt ce qui m’arrive souvent, tu peux tout a fait rattacher ton screen, cela fait partis de l’intérêt que je trouve a screen.
Attention par contre il m’est arrivé quelques fois que le ssh crash méchament, et que le screen soit dans un état irrécupérable. Tu devra dans ce cas le tuer par un screen -wipe. et malheureusement relancer tes processus.
Je te rassure depuis deux ou trois ans maintenant que j’utilise screen, cela n’a du m’arriver pas plus de 10 fois.
Les fortunes de #epplug. Retrouvez les membres de notre association sur notre salon IRC: irc.geeknode.net #epplug
Voici quelques extraits amusants (Télécharger le fichier de fortune)
Association Picarde des Utilisateurs de Logiciels Libres (EPPLUG) Association régie par la loi 1901
137, avenue du général FOY 80000 AMIENS.
Parution au Journal Officiel le 21/06/03 sous le n° 20030025 Siren : 494 525 280
© epplug.org 2002-2005 - ce site fonctionne grace au moteur d'edition collaboratif SPIP fonctionnant sous license GPL
Toutes les interventions sur ce site sont la propriété de leurs auteurs respectifs.