Résumé : screen -x

Installation du paquet:

apt-get install screen

les commandes screen à partir de la console:

screen			// Lance un screen
screen -r			// Reprends un screen détaché
screen -d			// Force le détachement d'un screen en cas de plantage pour en reprendre le contrôle
screen -ls			// Affiche la liste des screen mère
 

commandes à partir d’une console screen:

CTRL+A puis C = créer une nouvelle console screen
CTRL+A puis N = passer à la console screen suivante
CTRL+A puis P = passer à la console screen précédente
CTRL+A puis D = Détacher le screen et revenir sur la console classique
CTRL+D = fermer une console screen. Lorsqu’il n’y a plus qu’une seule console, ça quitte screen.

TIPS

# terminal 1
$ screen -S moi
# terminal 2
$ screen -x moi
Reglage du problème de droit si non root.

# terminal 1
$ screen -S moi
# terminal 2
$ su -
$ chmod a+rw `tty`
$ su - monami
$ screen -x moi

Ce qui est bien, mais pas top. Faisons donc les choses dans l'autre sens, c'est la personne dans le terminal 1 qui accordera à celle de terminal 2 le droit de lire son terminal. Pour cela, il faut que screen soit setuid root. C'est un risque, si un utilisateur trouve une faille dans screen, peut-être qu'il pourra devenir root.

$ chmod +s /usr/bin/screen

Attention, si screen est setuid root, la variable SCREENDIR ne fonctionnera plus.

Mettons donc le maître sur le terminal1.

# terminal 1
$ screen -S moi
Ctrl-a :multiuser on
Ctrl-a :addacl user2
# terminal 2
$ screen -x user1/moi

Maintenant vous voulez que l'utilisateur qui vous espionne ne puisse pas interagir avec votre ligne de commande (si vous voulez jouer au prof avec votre chat). Il suffit simplement de lui retirer les droits qui sont activés par défaut.

Ctrl-a :chacl user2 -wx "#?"

Notez que vous pouvez mettre ces commandes dans votre .screenrc :

multiuser on
addacl user2

cette commande ne fonctionne pas dans le sceenrc

chacl user2 -wx "#?"

*

Utilisation

Une fois l'installation complétée, vous pouvez commencer à utiliser screen.

Screen - Ouvrir

Pour lancer screen dans une Console (ou un Terminal), il suffit de rédiger la commande :

 $ screen

Il ne reste plus qu’à appuyer sur la touche :

Espace

ou celle de :

Entrée

pour se retrouver dans la fenêtre de screen.

Il n'y pas de différence, mais vous êtes bien dans screen avec ses commandes spécifiques d'utilisation supplémentaires et non plus dans votre ancienne console. Screen - Quitter

Pour sortir de screen rédigez :

exit

ou bien appuyez sur la combinaison des touches clavier :

Ctrl+d

Vous devez taper autant de fois ces commandes que vous avez de fenêtres ouvertes. Un message apparaît finalement vous indiquant que vous avez bien quitté screen :

[screen is terminating]

 Screen - Options
 Option : Ctrl+a - gestion des fenêtres
 Ctrl+a c

Pour créer une nouvelle fenêtre, il suffit de taper la combinaison de touches :

 Ctrl+a c

Il est à noter qu'en plus de créer une nouvelle fenêtre, screen nous emmène directement dans celle-ci.

 Ctrl+a w

Screen étant un gestionnaire de fenêtres, il permet donc d’ouvrir et de fermer des fenêtres. Il va même jusqu'à indiquer dans quelle fenêtre nous nous trouvons.

Ctrl+a w

Résultat

Une petite ligne s’affiche temporairement en bas de l'écran où l'on peut lire par exemple ceci :

0-$ bash  1*$ bash (l'étoile * à côté du 1 indique que nous sommes bien dans la deuxième fenêtre)

Signification

Nous avons tout simplement demandé à screen de nous dire où nous étions, et il nous a répondu … à sa façon.

Chaque fenêtre de screen a :

un numéro de session screen, la première commence à 0,
un astérisque ( * ) qui indique dans quelle session screen nous nous situons actuellement,
un signe de dollar ( $ )
le nom du shell utilisé.

Pour se promener entre les différentes fenêtres, il existe quatre solutions :

 Ctrl+a n

Pour aller à la fenêtre suivante :

 Ctrl+a n
 Ctrl+a p

pour aller à la fenêtre précédente :

 Ctrl+a p 
 Ctrl+a [0 (zéro, le chiffre) - 9]

pour naviguer entre les dix fenêtres de screen :

 Ctrl+a 0
 Ctrl+a 1
 ...
 Ctrl+a 9 

Au choix. :-)

 Ctrl+a ' (apostrophe)

Pour aller dans une des fenêtres par le numéro :

 Ctrl+a ' 

Puis, tapez dans le prompt le numéro de la fenêtre que vous désirez atteindre.

Ctrl+a “ (guillemets doubles)

Pour aller dans une des fenêtres visuellement :

 Ctrl+a "

Propose la liste des différentes fenêtres et nous pouvons y choisir au clavier, par les flèches de direction, une session où nous situer en la validant. Pour un clavier qwerty Ctrl+a puis shift (flèche pour les majuscules) ' (apostrophe)

Pour avoir la liste des différentes fenêtres :

 Ctrl+a shift '

Propose la liste des différentes fenêtres, à l'identique de l'option :

 Ctrl+a w

Option : -S nommer la session screen

L'option -S à l'ouverture de screen permet de donner un nom explicite à la session que nous ouvrons.

Ainsi, par exemple, nous pouvons ouvrir une session screen nommée user ainsi :

screen -S user

Ceci crée une session screen nommée user.

Nous pouvons par exemple y lancer une tâche un peu longuette, nous deconnecter pendant cette tâche sans l'arrêter.

Ctrl+a d

Pour y revenir, il suffira de taper :

screen -r user

Et vérifier la bonne continuité ou faire cesser la commande qui y aura été lancée précédemment en arrêtant screen par :

C+d

ou :

exit

Option : -r

Pour revenir à une session que vous avez ouverte et laissé active :

screen -r

Et vous y serez de retour directement.

Si vous avez plusieurs sessions en cours, vous pourrez ensuite en consulter la liste avec :

Ctrl+a"

Comme indiqué dans les options -a

Alternative : script