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édentesRévision précédente
Prochaine révision
Révision précédente
screen [Le 05/09/2010, 08:51] 88.219.189.39screen [Le 28/01/2026, 11:15] (Version actuelle) – <code> --> <code bash> !-) bcag2
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** (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. Ceci explique sa désignation de «multiplexeur de terminaux». Il offre d'autres services très utiles comme : +**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.
-  * La possibilité d'attacher et de détacher une session, pratique pour reprendre la main sur un [[:irssi]]. +
-  * La possibilité de partager un terminal avec un autre utilisateur, idéal pour aider un utilisateur distant.+
  
-<note tip>[[byobu]] est une version améliorée de //screen// disponible par défaut dans Ubuntu 10.04. Il peut s'utiliser avec les mêmes commandes que //screen// mais aussi avec des raccourcis F2 à F9 qui sont plus faciles à utiliser (voir l'aide disponible dans le logiciel par le menu F9.</note>+Il offre d'autres services très utiles comme : 
 +  * 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é pour administrer un serveur, de lancer des tâches ou l’exécution de scripts qui peuvent durer longtemps et pouvoir se détacher puis se reconnecter plus tard (le lendemain par exemple). 
 +  * La possibilité de laisser tourner une commande ssh même en cas de coupure de connexion, idéal pour des opérations d'administration via smartphone quand le réseau mobile est faible ou instable.
  
 ===== Pré-requis ===== ===== Pré-requis =====
Ligne 13: Ligne 17:
   * 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** : [[apt://screen|screen]]+S'il ne l'est pas déjà, [[:tutoriel:comment_installer_un_paquet|installez le paquet]] **[[apt>screen]]**
  
-<note tip>Screen est disponible par défaut depuis Jaunty Jackalope, il bénéficie en plus de trois profils au choix relativement intéressants pour ceux qui n'auraient pas déjà fait le leur. </note>+===== Exemple d'utilisation de Screen =====
  
-===== Exemple d'utilisation de screen ===== +Nous allons lancer dans le //screen// une application en ligne de commande, puis « nous détacher » de la session du //screen// en laissant l'application tourner dedans. Ensuite, à 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é.
- +
-Nous allons lancer dans le //screen// une application en ligne de commande, puis «nous détacher» de la session du //screen// en laissant l'application tourner dedans. Ensuite, à 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é.+
  
   * Créer un nouveau //screen// en nommant la session :   * Créer un nouveau //screen// en nommant la session :
-<code>screen -S nom_de_la_session</code>+<code bash>screen -S nom_de_la_session</code> 
 + 
 +<code bash>screen -S nom_de_la_session -dm sleep 10</code> 
 + 
 +<code bash>screen -XS nom_de_la_session quit</code>
  
 Un message annonçant la version utilisée et indiquant que ce programme est publié sous licence GPL s'affiche à l'écran. Il ne reste plus qu'à presser la touche [ESPACE]. Un message annonçant la version utilisée et indiquant que ce programme est publié sous licence GPL s'affiche à l'écran. Il ne reste plus qu'à presser la touche [ESPACE].
  
-La nouvelle session du //shell// s'affiche et attend qu'on saisisse une commande, par exemple : <code>echo test</code>+La nouvelle session du //shell// s'affiche et attend qu'on saisisse une commande, par exemple : <code bash>echo test</code>
  
 Le //shell// se présente alors comme ça : Le //shell// se présente alors comme ça :
-<code> +<code bash
-  foo@bar $ echo test +foo@bar $ echo test 
-  test +test 
-  foo@bar $+foo@bar $
 </code> </code>
  
Ligne 44: Ligne 50:
  
 OU fermer le terminal et/ou ouvrir un autre terminal OU fermer le terminal et/ou ouvrir un autre terminal
 +OU tapez exit
  
   * Pour se rattacher à la session du //screen// :   * Pour se rattacher à la session du //screen// :
  
-<code>screen -r nom_de_la_session</code>+<code bash>screen -r nom_de_la_session</code>
  
 <note tip> <note tip>
Ligne 55: Ligne 62:
 ===== Utilisation ===== ===== Utilisation =====
  
-==== Lancement de screen ====+==== Lancement de Screen ====
  
-  * Créer un nouveau //screen// en nommant la session : <code>screen -S toto</code>+  * Créer un nouveau //screen// en nommant la session : <code bash>screen -S 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).
  
-  * Connaître les //screen// existants : <code>screen -ls</code>+  * Connaître les //screen// existants : <code bash>screen -ls</code>
  
-  * Rattacher un //screen// existant : <code>screen -r</code> +  * Rattacher un //screen// existant : <code bash>screen -r</code>
-<note tip> +
-Si plusieurs //screen// sont en cours d'exécution, voilà ce que <code>screen -r</code> va afficher :+
  
-<code>+Si plusieurs //screen// sont en cours d'exécution, voilà ce que <code bash>screen -r</code> va afficher : 
 +<code bash>
 There are several suitable screens on:  There are several suitable screens on: 
       13379.toto1 (Detached)        13379.toto1 (Detached) 
       13308.toto2 (Detached)        13308.toto2 (Detached) 
-      13356.toto3 (Dead ???)+      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.
Ligne 77: Ligne 84:
  
 Nous avons donc le choix entre plusieurs //screen// 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 bash>screen -r 13379</code>
 ou ou
-<code>screen -r toto1</code+<code bash>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 un //screen// est mort (toto3 dans l'exemple ci-dessus), il est possible de le supprimer en saisissant la commande  +<code bash> 
-<code>+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 bash>
 screen -wipe screen -wipe
 </code> </code>
-</note> 
- 
-<note tip> 
-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»). 
-</note> 
  
 ==== Créer un nouveau terminal ==== ==== Créer un nouveau terminal ====
Ligne 101: Ligne 107:
 ==== 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 ["]: lister 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 terminaux actuels avec leur nom. +  * [CTRL]+[a] suivi de [w]: lister les terminaux actuels avec leur nom. 
-    * [CTRL]+[a] suivi de [a]: retourner au terminal d'où l'on vient. +  * [CTRL]+[a] suivi de [a]: retourner au terminal d'où l'on vient. 
-    * [CTRL]+[a] suivi de [A]: 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 bash>exit</code>
  
-<code>exit</code> +    * [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//.
-    * [CTRL]+[D] : fermer une console //screen//. Lorsquil ny a plus quune seule console, ça 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 ====
Ligne 126: Ligne 133:
  
   * Créer un nouveau //screen// en nommant la session :   * Créer un nouveau //screen// en nommant la session :
-<code>screen -S toto</code>+<code bash>screen -S toto</code>
  
-Votre ami se connecte sur votre machine via [[:ssh]] par exemple et saisit la commande suivante : +Votre ami se connecte sur votre machine avec le même compte, via [[:ssh]] par exemple et saisit la commande suivante : 
-<code>screen -x toto</code>+<code bash>screen -x toto</code>
  
 À 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. À 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.
Ligne 136: Ligne 143:
  
 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 
 +  * [CTRL]+[a] suivi de [a]: Envoie le caractère de commande (CTRL a) à la fenêtre. 
  
 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 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 : 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 bash>cp /etc/screenrc ~/.screenrc</code>
  
-Et vous pourrez ensuite le personnaliser comme bon vous semble. +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>+<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>
  
-===== Liens =====+ 
 +===== 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]] paru 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]]
-  * [[http://forum.ubuntu-fr.org/viewtopic.php?id=390985|Partagez vos '.screenrc' (sur Ubuntu-fr)]] +  * [[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]], boubou_cs//.+//Contributeurs : Termitor, Benoît « Beny » Pineau, [[utilisateurs:loack]], [[utilisateurs:petitchevalroux]], boubou_cs, [[utilisateurs:mydjey]]//