Jump to content

Archived

This topic is now archived and is closed to further replies.

Sandeman

[TUTO] screen, détachement/rattachement terminal

Recommended Posts

Un bref tuto sur screen.

:fumer:A quoi ça sert ?

screen permet de détacher et rattacher une session de terminal.

:arrow:Concrètement ?

je suis à la maison, je lance dans une session de terminal ma compilation de noyau ou mon emerge dans un terminal. Arrivé au boulot, d'un coup de baguette magique, je "transfère" ma session de terminal distante dans la session en cours : l'affichage reprend comme si j'étais devant mon terminal à la maison.

Autre exemple, je lance une session sur le terminal en salle machine, puis je retourne tranquillement à mon bureau et je reprends la session pour voir ce qui se passe...

Un peu comme du pcanywhere/VNC de terminal.

:arrow:Commence ça marche ?

Il faut d'abord installer "screen" :

  • # emerge screen
  • # apt-get install screen
  • ...

dans la première session ("à la maison") il faut lancer screen

screen

pour "détacher" le terminal en cours. L'écran de la console est remis à zéro (comme un coup de commande clear) et le terminal peut être utilisé normalement.

Sur une machine distante, je me connecte sur la première machine (via SSH, par exemple).

screen -ls

me permet de voir les sessions en cours

screen -ls

There are screens on:

        32360.pts-2.gandalf    (Attached)

        26587.pts-2.gandalf    (Attached)

2 Sockets in /var/run/screen/S-root.

Si je veux savoir à quoi correspond ce screen, facile, le premier nombre est le PID du process screen, un

ps fx

me permettra de voir les process lancés dans ce screen

...32360 ?        Ss    0:00              \_ SCREEN

32361 pts/4    Ss    0:00                  \_ -/bin/bash

11393 pts/4    R+    0:00                      \_ ps fx

...

26587 ?        Ss    0:08 SCREEN

26588 pts/3    Ss    0:00  \_ -/bin/bash

29513 pts/3    R+    8:27      \_ /usr/bin/python -O /usr/bin/emerge -kDe world

11394 pts/3    R+    0:00          \_ /usr/bin/python -O /usr/bin/emerge -kDe world

maintenant si je veux ouvrir mon "emerge world" (624 packages, ça me tente donc bien de savoir où j'en suis ...) je n'ai qu'à faire un

screen -r 26587.pts-2.gandalf

et le terminal est attaché à ma session actuelle ... magique, non ?

:arrow:Quelques autres commandes

screen -wipe

pour tuer les screens qui resteraient fantômes.

:arrow:Quelques commentaires ?

A noter que ça gère plutôt bien les types de terminaux (par exemple la modification du titre de la fenêtre par emerge [pour indiquer où il en est] est transportée ...)

Share this post


Link to post
Share on other sites

Pour partager un screen entre plusieurs utilisateurs, qu'ils puissent ainsi interagir simultanément :

screen -Am pour lancer le screen

Un simple screen -x/-r par utilisateurs pour s'y attacher et apres vive le chat via ssh :> ( Pour completer sandeman pour se detacher d'un screen ctrl+a+d )

C'est moin convivial que write ou talk mais pour que deux admin puisse juger ensemble d'une configuration sur une box je pense que c'est un bon compromis.

Share this post


Link to post
Share on other sites

au lieu de faire "screen -r 26587.pts-2.gandalf", on peut aussi faire "screen -r 26587"

Share this post


Link to post
Share on other sites

J'ai un problème avec screen justement :copain:

Quand je fais un screen suite à un su - USER, j'ai ce message d'erreur :

Cannot open your terminal '/dev/pts/2' - please check.

Est ce que quelqu'un a déjà rencontré ça ? ;)

Share this post


Link to post
Share on other sites
J'ai un problème avec screen justement :sms:

Quand je fais un screen suite à un su - USER, j'ai ce message d'erreur :

Cannot open your terminal '/dev/pts/2' - please check.

Est ce que quelqu'un a déjà rencontré ça ? :chinois:

Ca arrive souvent , c'est juste que le device attaché a ton terminal n'appartient pas a l'utilisateur ( a cause du su - user justement ).

A partir de la plusieures methodes plus ou moin propres :)

chown user:group /dev/pts/Numero du pts

chmod 777 /dev/pts/Numero du pts (Attention c dangereux surtt avec un screen)

edit : les commandes depuis le proprietaire du term , enfin ca parait evident mais je prefere le preciser :)

Share this post


Link to post
Share on other sites

:craint::roll::byebye::yes::D:incline::incline::incline::incline::incline:

Je cherche à faire ça depuis un certain temps

:yes:

Edit: Il y a un truc qui ne va pas dans les commandes du premier post: Il n'est pas possible de rattacher un screen deja attaché:

rbouallou@fuji rbouallou $ screen -ls
There are screens on:
       17659.pts-3.fuji        (Attached)
       28176.tty1.fuji (Attached)
2 Sockets in /var/run/screen/S-rbouallou.

rbouallou@fuji rbouallou $ screen -r 17659.pts-3.fuji
There is a screen on:
       17659.pts-3.fuji        (Attached)
There is no screen to be resumed matching 17659.pts-3.fuji.

Share this post


Link to post
Share on other sites

Est-ce que l'on peut faire comme avec un Terminal MS-Windows, se déconnecter uniquement du terminal mais ne pas "fermer" la session en cours, puis la reprendre plus tard du même poste de travail ou d'ailleurs ?

Share this post


Link to post
Share on other sites
Est-ce que l'on peut faire comme avec un Terminal MS-Windows, se déconnecter uniquement du terminal mais ne pas "fermer" la session en cours, puis la reprendre plus tard du même poste de travail ou d'ailleurs ?

ben c'est un peut le but de screen...

si tu veux la même chose en graphique, vnc le permet, notamment...

Share this post


Link to post
Share on other sites

mainteannt que j'y pense, il serait bon de faire un petit topic sur nohup, mais si ce n'est pas aussi puissant ...

Share this post


Link to post
Share on other sites

Ce topic vaut mieux que sa place dans les bas fonds du forum, donc je le remonte avec 2-3 infos utiles aux utilisateurs de screen :

Une fois dans screen :

Si vous voulez lancer un deuxième programme dans le même screen, sans devoir faire un nouveau screen qui aura un nouveau PID :

C-a c : affiche un nouveau prompt dans le même screen. Une nouvelle fenêtre, en fait.

C-a " : affiche une liste des fenêtres ouvertes dans le screen en court.

C-a A : si vous avez testé C-a ", vous avez dû remarquer que toutes les fenêtres sont nommées "bash", ce qui n'est pas pratique. C-a A permet de nommer la fenêtre en cours, afin de la retrouver dans la liste des fenêtres!

Share this post


Link to post
Share on other sites

Edit: Il y a un truc qui ne va pas dans les commandes du premier post: Il n'est pas possible de rattacher un screen deja attaché

screen -dr

Share this post


Link to post
Share on other sites

Edit: Il y a un truc qui ne va pas dans les commandes du premier post: Il n'est pas possible de rattacher un screen deja attaché

screen -dr

Voui, mais mieux vaut faire screen -x dans ce cas précis.

«-d -r Reattach a session and if necessary detach it first.»

«-x Attach to a not detached screen session. (Multi display mode).»

Share this post


Link to post
Share on other sites

:|

ça va faire 1 mois que je l'utilise à tour de bras pour les emerge, les connections ssh, le lancement de sessions X distantes ( comme ça je perds pas un terminal (en mode console) et mes sessions X distantes ne sont pas stoppées si j'arrete ma session X locale ) et autres activités ne pouvant pas etre interrompues. je regardais comment faire un programme de ce genre ( les emerges distants, c'est un peu lourd lors d'une déconnexion ) quand un collègue m'a demandé comment fonctionnait screen, j'ai pas eu besoin de développer et c'est bien plus abouti que ce que j'aurai fait.

Share this post


Link to post
Share on other sites
ça va faire 1 mois que je l'utilise à tour de bras pour[...] les connections ssh

Lancer le screen côté serveur ssh, ça va, mais côté client faut éviter (c'est pas sécurisé du tout...).

C'est comme faire faire un su dans un screen, faut pas..

Share this post


Link to post
Share on other sites
screen -dr
screen -x :chinois:
Lancer le screen côté serveur ssh, ça va, mais côté client faut éviter (c'est pas sécurisé du tout...).

C'est comme faire faire un su dans un screen, faut pas..

Pourquoi ?

Share this post


Link to post
Share on other sites
Lancer le screen côté serveur ssh, ça va, mais côté client faut éviter (c'est pas sécurisé du tout...).

C'est comme faire faire un su dans un screen, faut pas..

Pourquoi ?

Ben si un gars arrive il peut se connecter (sans mdp ni rien) non?

Share this post


Link to post
Share on other sites
ça va faire 1 mois que je l'utilise à tour de bras pour[...] les connections ssh

Lancer le screen côté serveur ssh, ça va, mais côté client faut éviter (c'est pas sécurisé du tout...).

C'est comme faire faire un su dans un screen, faut pas..

je lance screen en distant ... sans "su" ... en réseau sécurisé où nous ne somme que 8 users. Celui qui essaye de pirater/saboter une bécanne sera vite trouvé et viré.

Share this post


Link to post
Share on other sites
je lance screen en distant ... sans "su" ... en réseau sécurisé où nous ne somme que 8 users. Celui qui essaye de pirater/saboter une bécanne sera vite trouvé et viré.

On est parano ou on l'est pas :yes:

Share this post


Link to post
Share on other sites
Ben si un gars arrive il peut se connecter (sans mdp ni rien) non?
Si un gars arrive où ?

Tu parle d'une machine multi utilisateur ?

Parce que sinon je ne vois pas.

Share this post


Link to post
Share on other sites
Ben si un gars arrive il peut se connecter (sans mdp ni rien) non?
Si un gars arrive où ?

Tu parle d'une machine multi utilisateur ?

Parce que sinon je ne vois pas.

Ben dès qu'il a accès physique à la machine presque...

Share this post


Link to post
Share on other sites

ben si on est pas derrière sa machine, faut vérouiller un peu les sessions aussi, sinon d'un point de vue sécurité sur le réseau lui-meme je pense qu'il y a plus à craindre de l'internet plutot que du réseau local =)

Share this post


Link to post
Share on other sites
Lancer le screen côté serveur ssh, ça va, mais côté client faut éviter (c'est pas sécurisé du tout...).

C'est comme faire faire un su dans un screen, faut pas..

Pourquoi ?

Ben si un gars arrive il peut se connecter (sans mdp ni rien) non?

On peut locker un screen : Ctrl-A-x

Share this post


Link to post
Share on other sites

×
×
  • Create New...