Screen
(GNU/Screen) est un Multiplexeur permettant d'ouvrir plusieurs terminaux (on dit des sessions) à partir d'un seul.
Cela permet de s'attacher et de se détacher d'une commande en la laissant active dans la sessionscreen créée.
Via SSH, screen peut ouvrir une session screen sur un pc distant et de laisser active une commande en exécution tout en se déconnectant totalement du pc distant.
Puis, ultérieurement, de revenir sur cette commande dans la même session screen.
Idéal pour intervenir sur un pc distant (un serveur souvent) ou pour aider un utilisateur qui pourra suivre visuellement vos actions sur son pc en ouvrant la même session screen !
Associés, SSH et screen sont le nec plus ultra sécuritaire et efficace pour interagir entre des pc.
Rien de plus simple. Il suffit d'utiliser votre gestionnaire de paquets préférés et d'installer le paquet screen.
Par exemple, avec apt-get :
apt-get update && apt-get install screen
Une fois l'installation complétée, vous pouvez commencer à utiliser screen.
Pour lancer screen dans une Console (ou un Terminal), il suffit de rédiger la commande :
screen
Au lancement de screen, un message s’affiche à l’écran indiquant la version utilisée ainsi que ce programme est sous licence GPL.
Screen version 4.02.01 (GNU) 28-Apr-14 Copyright (c) 2010 Juergen Weigert, Sadrul Habib Chowdhury Copyright (c) 2008, 2009 Juergen Weigert, Michael Schroeder, Micah Cowan, Sadrul Habib Chowdhury Copyright (c) 1993-2002, 2003, 2005, 2006, 2007 Juergen Weigert, Michael Schroeder Copyright (c) 1987 Oliver Laumann This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program (see the file COPYING); if not, see http://www.gnu.org/licenses/, or contact Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA. Send bugreports, fixes, enhancements, t-shirts, money, beer & pizza to screen-devel@gnu.org Capabilities: +copy +remote-detach +power-detach +multi-attach +multi-user +font +color-256 +utf8 +rxvt +builtin-telnet [Press Space or Return to end.]
images.debian-facile.org/file-Ra38c6907fa06d0e4da3bf4c5913dc7f0
Image disparue ! smolski 18/03/2012
Il ne reste plus qu’à appuyer sur la touche Espace ou sur la touche ↵ 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.
Pour sortir de screen rédigez :
exit
ou bien appuyez sur la combinaison des touches clavier Ctrl+D
Nous verrons plus loin qu'il existe d'autres manières de sortir de screen.
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]
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.
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.
Tapez 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 :
0
,*
) qui indique dans quelle session screen nous nous situons actuellement,$
)Pour se promener entre les différentes fenêtres, il existe quatre solutions :
Pour aller à la fenêtre suivante Ctrl+A+N
pour aller à la fenêtre précédente Ctrl+A+P
pour naviguer entre les dix fenêtres de screen
Ctrl+A+0
Ctrl+A+1
…
Ctrl+A+9
Au choix.
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.
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 avoir la liste des différentes fenêtres Ctrl+Alt+Maj+'
Propose la liste des différentes fenêtres, à l'identique de l'option Ctrl+A+W
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 déconnecter 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
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
Une barre de status qui affiche les fenêtres totalement personnalisable; Ajouter ceci à vote fichier de configuration screen perso : .screenrc :
hardstatus alwayslastline
hardstatus string '%{= kG}%{C}Screen: %{c}%{= kG}[%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{C} %d-%m %{W}%c %{g}]'
Screen permet de partager ton terminal avec un autre utilisateur ( ayant un autre compte dans ton ordi ). Dans cet exemple, tu es l'utilisateur nommé "foo"; tu crées une session screen multiuser puis tu autorises ton ami nommé "bar" à t'y rejoindre. Ici, on autorisera à bar uniquement la lecture; il ne pourra pas écrire ou exécuter des commandes dans ton terminal. Il pourra alors observer ton terminal à distance pour te conseiller, en te laissant le contrôle par sécurité .
chmod u+s /usr/bin/screen #active le droit SUID du programme screen chmod 755 /var/run/screen #autorise, pour l'utilisateur root uniquement, l'écriture sur le dossier contenant les sessions screen
Dans un terminal avec ton compte foo :
screen -S UnScreenPourDeux #Crée une session screen nommée UnScreenPourDeux
Activation du mode multiuser
CTRl a:multiuser on
Ajoute ton ami bar à Liste de Contrôle d'Accès (ACL)
CTRL a:acladd bar
( ou bar le login de ton ami à inviter)
Retire (-)les droits d'écriture (write) et d'exécution à bar pour toutes les fenêtres screen ( symbolisées par #) et toutes les commandes (? représente toute les commandes) pour ta sécurité.
CTRL a:aclchg bar -wx "#?"
Ajoute à ton ami bar les droits d'exécution (+x) des commandes colon ( entrer en mode commande de screen, nécessaire pour les suivantes ), wall ( envoyer un message aux autres utilisateurs de screen ), detach ( se détacher de la session, sinon ton ami sera bloqué pour toujours :p )
CTRL a:aclchg bar +x "colon,wall,detach"
Au tour de ton ami bar de se connecte à distance à ton ordinateur par SSH et rejoint ta session existante ( -x ), en précisant ton login et le nom de ta session :
screen -x foo/UnScreenPourDeux
Il peut alors voir tout ce que tu fais dans ton terminal pour te conseiller et t'envoyer des messages avec CTRL a:wall "coucou ;)"
chmod u-s /usr/bin/screen chmod 775 /var/run/screen
Doc multiuser de screen : https://www.gnu.org/software/screen/manual/html_node/Multiuser-Session.html#Multiuser-Session
Merci à martin de nous avoir initié ce si bô tutô ! Yep !