Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
screen [Le 30/06/2009, 10:00]
213.95.41.13 correction : lancer => lancé
screen [Le 13/02/2023, 21:47] (Version actuelle)
176.171.41.89 [Raccourcis supplémentaires]
Ligne 1: Ligne 1:
-{{tag>Dapper Gutsy Jaunty ​administration système console ​BROUILLON}}+{{tag>​administration système console ​terminal}} 
 +---- 
 + 
 +{{ gnu_screen.png?​190nolink| Gnu Screen}} 
 +====== Screen, le multiplexeur de terminaux ======
  
-====== ​Screen ​le multiplexeur de terminaux ​======+**Screen** ([[wpfr>​GNU Screen]]) est un « multiplexeur de terminaux ​» permettant d'​ouvrir plusieurs terminaux dans une même console, de passer de l'un à l'​autre et de les récupérer plus tard.
  
-**Screen** (Gnu/​Screen) est un utilitaire permettant d'​ouvrir plusieurs terminaux dans une même console, de passer de l'un à l'​autre et de les récupérer plus tard. Il offre d'​autres services très utiles comme : +Il offre d'​autres services très utiles comme : 
-  * La possibilité d'​attacher et de détacher une session, pratique pour reprendre la main sur un [[:irssi]].+  * La possibilité d'​attacher et de détacher une session, pratique ​par exemple ​pour reprendre la main sur un client IRC tel que [[:Irssi]] ou [[:Weechat]].
   * La possibilité de partager un terminal avec un autre utilisateur,​ idéal pour aider un utilisateur distant.   * La possibilité de partager un terminal avec un autre utilisateur,​ idéal pour aider un utilisateur distant.
  
Ligne 11: Ligne 15:
   * Disposer des [[:​sudo|droits d'​administration]] ;   * Disposer des [[:​sudo|droits d'​administration]] ;
   * Disposer d'une connexion à Internet configurée et activée ;   * Disposer d'une connexion à Internet configurée et activée ;
-  * Avoir activé l'​accès aux [[:​depots#​universe_et_multiverse|dépôts Universe et Multiverse]] ​;+  * Avoir activé l'​accès aux [[:​depots#​universe_et_multiverse|dépôts Universe et Multiverse]]
  
 ===== Installation ===== ===== Installation =====
  
-[[:​tutoriel:​comment_installer_un_paquet|Installez ​le paquet]] **screen**.+S'il ne l'est pas déjà, ​[[:​tutoriel:​comment_installer_un_paquet|installez ​le paquet]] **[[apt>screen]]**
  
-[[apt://​screen|screen]]+===== Exemple d'​utilisation de Screen =====
  
-<note tip>​Screen est disponible par défaut depuis Jaunty Jackalopeil bénéficie ​en plus trois profiles aux choix relativement intéressant pour ceux qui n'auraient pas déjà fait le leur</note>+Nous allons lancer dans le //screen// une application en ligne de commandepuis « nous détacher » de la session du //​screen// ​en laissant l'application tourner dedansEnsuite, à partir du même poste ou d'un poste distant (avec [[:ssh]] par exemple) nous pourrons « nous rattacher » à la session du //screen// et récupérer exactement la même chose que lorsque nous nous étions détaché.
  
-===== Exemple d'​utilisation de screen ​=====+  * Créer un nouveau //screen// en nommant la session : 
 +<​code>​screen -S nom_de_la_session</​code>​
  
-Nous allons lancer dans le //screen// une application en console, puis 'détacher'​ le //screen// en laissant ​l'application ​ tourner dedansEnsuite, ​à partir du même poste ou d'un poste distant (avec [[:ssh]] par exemple) nous pourrons rattacher le //screen// et récupérer exactement la même chose que lorsque nous l'​avons détaché.+Un message annonçant la version utilisée et indiquant que ce programme est publié sous licence GPL s'affiche à l'écranIl ne reste plus qu'à presser la touche ​[ESPACE].
  
-  * Lancer screen avec un nom spécifique+La nouvelle session du //shell// s'​affiche et attend qu'on saisisse une commande, par exemple : <​code>​echo test</​code>​
  
-<​code>​screen -S toto</​code>​ +Le //​shell// ​se présente alors comme ça :
- +
-Un message annoncant la version utilisée et indiquant que ce programme est publiée sous licence GPL s'​affiche à l'​écran. Il ne reste plus qu'à presser la touche [ESPACE]. +
- +
-On se retrouve avec un //shell// qui attend qu'on lui donne des commandes. +
-Par exemple +
-<​code>​echo test</​code>​ +
- +
-Le //shell// présente alors quelque chose comme ça+
 <​code>​ <​code>​
-  ​foo@bar $ echo test +foo@bar $ echo test 
-  test +test 
-  foo@bar $+foo@bar $
 </​code>​ </​code>​
  
-  * Détacher ​screen+  * Pour se détacher de la session du //screen// :
  
-Taper la suite de touche clavier suivante : [CTRL]+[a] suivi de [d]+Saisir ​la suite de touche clavier suivante : [CTRL]+[a] suivi de [d]
  
-  * Fermer ​le terminal et/ou en ouvrir un autre terminal+OU fermer ​le terminal et/ou ouvrir un autre terminal 
 +OU tapez exit
  
-  * Rattacher ​screen+  * Pour se rattacher à la session du //screen// :
  
-<​code>​screen -r</​code>​+<​code>​screen -r nom_de_la_session</​code>​
  
 <note tip> <note tip>
-Le terminal pour le rattachement peut très bien être distant. Nous accédons alors à notre machine via un accès [[:ssh]] par exemple.+Le rattachement ​à la session du //​screen// ​peut très bien se faire à distance. Nous accédons alors à notre machine via un accès [[:ssh]] par exemple.
 </​note>​ </​note>​
  
 ===== Utilisation ===== ===== Utilisation =====
  
-==== Lancement de screen ​====+==== Lancement de Screen ​====
  
-  * Créer un nouveau //screen// : <​code>​screen -toto</​code>​+  * Créer un nouveau //​screen// ​en nommant la session ​: <​code>​screen -toto</​code>​
  
 Une fois passé l'​écran de version, nous avons devant nous un terminal prêt à servir, nous pouvons l'​utiliser comme d'​habitude (en dehors des applications en mode graphique). Une fois passé l'​écran de version, nous avons devant nous un terminal prêt à servir, nous pouvons l'​utiliser comme d'​habitude (en dehors des applications en mode graphique).
Ligne 67: Ligne 65:
  
   * Rattacher un //screen// existant : <​code>​screen -r</​code>​   * Rattacher un //screen// existant : <​code>​screen -r</​code>​
-<note tip> 
-Si plusieurs //screens// sont en cours, voilà ce que screen -r va afficher: 
  
 +Si plusieurs //screen// sont en cours d'​exécution,​ voilà ce que <​code>​screen -r</​code>​ va afficher :
 <​code>​ <​code>​
 There are several suitable screens on:  There are several suitable screens on: 
       13379.toto1 (Detached) ​       13379.toto1 (Detached) ​
       13308.toto2 (Detached) ​       13308.toto2 (Detached) ​
 +      13334.toto3 (Attached) ​
 +      13356.toto4 (Dead ???)
 +
 Type "​screen [-d] -r [pid.]tty.host"​ to resume one of them. Type "​screen [-d] -r [pid.]tty.host"​ to resume one of them.
 </​code>​ </​code>​
  
-Nous avons donc le choix entre plusieurs //screens// que l'on va préciser simplement par+Nous avons donc le choix entre plusieurs //screen// que l'on va préciser simplement par
 <​code>​screen -r 13379</​code>​ <​code>​screen -r 13379</​code>​
 ou ou
 <​code>​screen -r toto1</​code>​ <​code>​screen -r toto1</​code>​
-</​note>​ 
  
-<note tip> +Si le //screen// que nous essayons de rattacher n'a pas été détaché ​(toto3 dans l'​exemple ci-dessus), il est possible de forcer son détachement de la console précédente ​
-Si le screen que nous essayons de rattacher n'a pas été détaché, il est possible de forcer son détachement de la console précédente ​avec l'​option "-d", ou d'avoir plusieurs attachements simultanés (option "​-x",​ voir "Partager un terminal")+<​code>​ 
-</note>+screen ​-d toto3 
 +</​code>​ 
 +Pour avoir plusieurs attachements simultanés (option "​-x"​), voir la section [[#Partager un terminal]]. 
 + 
 +Si un //screen// est mort (toto4 dans l'​exemple ci-dessus), il est possible de le supprimer en saisissant la commande 
 +<​code>​ 
 +screen -wipe 
 +</code>
  
 ==== Créer un nouveau terminal ==== ==== Créer un nouveau terminal ====
  
-Taper la suite de touche clavier suivante : [CTRL]+[a] suivi de [c]+Saisir ​la suite de touche clavier suivante : [CTRL]+[a] suivi de [c]
  
-Si vous avez auparavant exécuté une commande le contenu du terminal devrait visiblement changer.+Si vous avez auparavant exécuté une commandele contenu du terminal devrait visiblement changer ​: vous êtes dans le nouveau terminal dont vous venez de demander la création.
  
 ==== Naviguer entre les terminaux du screen ==== ==== Naviguer entre les terminaux du screen ====
  
-    ​* [CTRL]+[a] suivi de [n]: pour next, aller au terminal suivant. +  ​* [CTRL]+[a] suivi de [n]: pour «**n**ext», aller au terminal suivant. 
-    * [CTRL]+[a] suivi de [p]: pour previous, aller au terminal précédent. +  * [CTRL]+[a] suivi de [p]: pour «**p**revious», aller au terminal précédent. 
-    * [CTRL]+[a] suivi de [0]..[9]: aller au terminal n. +  * [CTRL]+[a] suivi de [0]..[9]: aller au terminal ​//n//
-    * [CTRL]+[a] suivi de [']: saisir dans le prompt le numéro du terminal. +  * [CTRL]+[a] suivi de [']: saisir dans le prompt le numéro du terminal. 
-    * [CTRL]+[a] suivi de ["​]: ​propose la liste des différents terminaux, avec la possibilité d'en choisir un. +  * [CTRL]+[a] suivi de ["​]: ​lister ​des différents terminaux, avec la possibilité d'en choisir un. 
-    * [CTRL]+[a] suivi de [w]: Lister ​les consoles actuelles ​avec leur nom. +  * [CTRL]+[a] suivi de [w]: lister ​les terminaux actuels ​avec leur nom. 
-    * [CTRL]+[a] suivi de [a]: retourne ​au terminale ​d'où l'on vient. +  * [CTRL]+[a] suivi de [a]: retourner ​au terminal ​d'où l'on vient. 
-    * [CTRL]+[a] suivi de [A]: pour nommer les terminaux et s'y rendre par la suite plus aisément. +  * [CTRL]+[a] suivi de [A]: nommer les terminaux et s'y rendre par la suite plus aisément.
- +
- +
-====  Fermer un terminal ====+
  
 +====  « Tuer » un screen ====
 +Lorsque on est logué sur un screen, pour le « tuer » (kill) :
 <​code>​exit</​code>​ <​code>​exit</​code>​
  
-    * [CTRL]+[D] : fermer ​une console //screen//. Lorsquil ny a plus quune seule console, ça quitte //screen//.+    * [CTRL]+[D] : équivalent à exit. Lorsqu’il n’y a plus qu’une seule console ​quitte ​//screen//
 +    * [CTRL]+[A] puis :quit le ferme également. Lorsqu'il n'y a plus qu'une seule console quitte //screen//.
  
 ==== Détacher screen ==== ==== Détacher screen ====
  
-    ​* [CTRL]+[a] suivi de [d]: pour détacher //​screen//​ +  ​* [CTRL]+[a] suivi de [d]: pour détacher //​screen//​ 
-    * [CTRL]+[a] suivi de [DD]: pour détacher //screen// et fermer la session+  * [CTRL]+[a] suivi de [DD]: pour détacher //screen// et fermer la session
  
 ==== Partager un terminal ==== ==== Partager un terminal ====
  
-Imaginez que vous vouliez que quelqu'​un fasse quelque chose à distance sur votre machine, mais que vous souhaiteriez voir ce qu'il fait, alors **Screen** ​va vous aider :)+Imaginez que vous vouliez que quelqu'​un fasse quelque chose à distance sur votre machine, mais que vous souhaiteriez voir ce qu'il fait, alors //​screen// ​va vous aider :)
  
-  * Lancer ​screen ​sur votre machine+  * Créer un nouveau //screen// en nommant la session :
 <​code>​screen -S toto</​code>​ <​code>​screen -S toto</​code>​
  
-Votre ami se connecte sur votre machine via [[:ssh]] par exemple et tape la commande suivante+Votre ami se connecte sur votre machine via [[:ssh]] par exemple et saisit ​la commande suivante ​:
 <​code>​screen -x toto</​code>​ <​code>​screen -x toto</​code>​
  
-À partir de là, tout ce qui est tapé dans un des 2 terminaux (le vôtre ou le sien) apparaît sur les deux. Si il n'y a qu'un seul screen de lancé, il n'est pas nécessaire de préciser son nom lors de la connexion. +À partir de là, tout ce qui est saisi dans un des 2 terminaux (le vôtre ou le sien) apparaît sur les deux. Si il n'y a qu'un seul //screen// de lancé, il n'est pas nécessaire de préciser son nom lors de la connexion.
  
 ===== Raccourcis supplémentaires ===== ===== Raccourcis supplémentaires =====
  
 Séparation de la console : Séparation de la console :
-    ​* [CTRL]+[a] suivi de [S]: Sépare la console courante en deux consoles (la console courante devient celle du dessus). + 
-    * [CTRL]+[a] suivi de [TAB]: Une fois la console séparée, ce raccourci permet de se positionner sur la console suivante. +  * [CTRL]+[a] suivi de [AltGr]+[6] (|): Sépare la console courante en deux consoles verticalement (la console courante devient celle de gauche). 
-    * [CTRL]+[a] suivi de [Q]: Supprime toutes les consoles, sauf la console ​courante. +  ​* [CTRL]+[a] suivi de [S]: Sépare la console courante en deux consoles ​horizontalement ​(la console courante devient celle du dessus). 
-    * [CTRL]+[a] suivi de [K]: Supprime ​la console courante. +  * [CTRL]+[a] suivi de [TAB]: Une fois la console séparée, ce raccourci permet de se positionner sur la console suivante. 
-<note tip>A noter que la suppression d'une ou plusieurs régions ne supprime pas les console ​qui s'y trouvaient.+  * [CTRL]+[a] suivi de [Q]: Supprime toutes les régions, sauf la région ​courante. 
 +  * [CTRL]+[a] suivi de [K]: Tue la console courante ​ainsi que les processus qui s'y trouvent. 
 +  * [CTRL]+[a] suivi de [X]: Ferme la région courante. 
 + 
 +<note tip> 
 +:!:  Pour la seconde console, il faut créer un nouveau screen par  [CTRL]+[a] suivi de [c] :!: 
 + 
 +A noter que la suppression d'une ou plusieurs régions ne supprime pas les consoles ​qui s'y trouvaient.
 </​note>​ </​note>​
  
 Divers : Divers :
-    ​* [CTRL]+[a] suivi de [F]: Redimensionnement de la fenêtre à la taille de son terminal. Utile lorsque l'on est plusieurs sur une même console et que l'on enrage de ne pas avoir un écran 16/9e. +  ​* [CTRL]+[a] suivi de [F]: Redimensionnement de la fenêtre à la taille de son terminal. Utile lorsque l'on est plusieurs sur une même console et que l'on enrage de ne pas avoir un écran 16/9e. 
-    * [CTRL]+[a] suivi de [H]: Permet de logguer tout ce qui passe à l'​écran dans un fichier $HOME/​screenlog.XX (XX : no de la console) +  * [CTRL]+[a] suivi de [H]: Permet de logguer tout ce qui passe à l'​écran dans un fichier $HOME/​screenlog.XX (XX : no de la console) 
-    * [CTRL]+[a] suivi de [?]: Affiche une petite aide+  * [CTRL]+[a] suivi de [?]: Affiche une petite aide 
 +  * [CTRL]+[a] suivi de [x]: Verrouille la session 
  
 Déplacement et copie : Déplacement et copie :
-    ​* [CTRL]+[a] suivi de [ESC]: Entre en mode copie/​scrollback. On peut se déplacer dans le screen avec les flèches directionnelles. +  ​* [CTRL]+[a] suivi de [ESC]: Entre en mode copie/​scrollback. On peut se déplacer dans le //screen// avec les flèches directionnelles. 
-    * ENTER : Permet de commencer une sélection. Appuyer une nouvelle fois sur ENTER pour terminer la sélection. +  * ENTER : Permet de commencer une sélection. Appuyer une nouvelle fois sur ENTER pour terminer la sélection. 
-    * [CTRL]+[a] suivi de []]: Colle le contenu sélectionné précédemment. ​ +  * [CTRL]+[a] suivi de []]: Colle le contenu sélectionné précédemment.
  
 ===== Personnaliser son screen ===== ===== Personnaliser son screen =====
  
-Il est possible ​d'​avoir ​un fichier de configuration spécifique. Un exemple ​de "​screenrc" ​est disponible dans /​etc/​screenrc. Il vous suffit de faire : +Il est possible ​pour chaque utilisateur du système de personnaliser son //screen// grâce à un fichier de configuration spécifique ​: «~/​.screenrc». Un exemple ​d'un tel fichier ​est disponible dans /​etc/​screenrc. Il vous suffit de faire : 
-<​code>​ cp /​etc/​screenrc ~/​.screenrc</​code+<​code>​cp /​etc/​screenrc ~/​.screenrc</​code>​
-Et vous pourrez ensuite le personnaliser comme bon vous semble.  +
-<note tip>Il est possible de changer le caractère d'​échappement (CTRL+a). De cette manière, vous avez un caractère d'​échappement sur votre machine et un différent sur une machine distante. Et grâce à cela, vous pouvez faire du screen dans un screen. </note>+
  
-===== Liens =====+Et vous pourrez ensuite le personnaliser comme bon vous semble. 
 + 
 +<note tip>Il est possible de changer le caractère d'​échappement (CTRL+a). De cette manière, vous avez un caractère d'​échappement sur votre machine et un différent sur une machine distante. Et grâce à cela, vous pouvez faire du //screen// dans un //​screen//​. 
 +[[https://​forum.ubuntu-fr.org/​viewtopic.php?​id=846021|https://​forum.ubuntu-fr.org/​viewtopic.php?​id=846021]] 
 +</​note>​ 
 + 
 + 
 +===== Voir aussi =====
  
   * Les pages du manuel **man screen** et **info screen**   * Les pages du manuel **man screen** et **info screen**
-  * La page du projet ​[[http://​www.gnu.org/​software/​screen]] (en) +  * [[http://​www.gnu.org/​software/​screen|La page du projet]] (en) 
-  * [[http://​www.ddmdllt.org/​weblog/​posts/​2008/​10/​27/​screen-ssh-et-autres-joies/​|Un article sur screen]] ​parut sur le planet ​de l'​APRIL+  * [[http://​www.ddmdllt.org/​weblog/​posts/​2008/​10/​27/​screen-ssh-et-autres-joies/​|Un article sur screen]] ​paru sur le Planet ​de l'​APRIL
   * [[http://​postit.petitchevalroux.net/​linux/​screen-tutoriel-video-linux.191.html|Tutoriel video de screen]]   * [[http://​postit.petitchevalroux.net/​linux/​screen-tutoriel-video-linux.191.html|Tutoriel video de screen]]
 +  * [[https://​forum.ubuntu-fr.org/​viewtopic.php?​id=390985|Partagez vos '​.screenrc'​ (sur Ubuntu-fr)]]
 +  * [[http://​durak.org/​sean/​pubs/​software/​screen/​screen.html#​Top|Manuel de screen]], [[http://​durak.org/​sean/​pubs/​software/​screen/​screen_27.html|partie sur le multiuser]] (en)
 +  * [[http://​unstableme.blogspot.fr/​2010/​01/​prevent-exit-of-shell-with-ctrl-d.html|Ignore crtl+d]] (en)
 +  * [[Tmux]] un autre multiplexeur.
 +  * [[:Byobu]] une version améliorée de Screen.
 +
 ---- ----
  
-//​Contributeurs : Termitor, Benoît « Beny » Pineau, [[utilisateurs:​loack]],​ [[utilisateurs:​petitchevalroux]],​ [[utilisateurs:​gardouille]] //+//​Contributeurs : Termitor, Benoît « Beny » Pineau, [[utilisateurs:​loack]],​ [[utilisateurs:​petitchevalroux]], boubou_cs, [[utilisateurs:​mydjey]]//
  • screen.1246348842.txt.gz
  • Dernière modification: Le 30/06/2009, 10:00
  • par 213.95.41.13