Sections
Vous êtes ici : Accueil Post Event How to screen & configuration .screenrc exemple

Aller au contenu. | Aller à la navigation

How to screen & configuration .screenrc exemple

Par Michel Le Cocq - Dernière modification Mar 31, 2009 05:29 PM
— Mots-clés associés : , , , ,

Screen est l'une des seules applications GNU que j'utilise tous les jours aussi bien dans ma vie professionnelle que personnelle avec mutt bien sûr. Screen est un multiterminal donnant également des possibilités d'attachement, de détachement et de partage.

Screen permet d'avoir facilement plusieurs shell ouverts et de lancer plusieurs commandes simultanément. Il vous permet également de laisser tourner vos commandes en taches de fond sur les machines hôtes, même si vous vous déconnectez de la machine !

Cette particularité permet aux utilisateurs de détacher screen de leur session active et de le récupérer plus tard sur une autre session. Ceci vous permet également de ne pas perdre votre session de travail même si vous vous retrouvez déconnecté pour une raison annexe. Vous pourrez au moment de votre reconnection vous rattacher à votre session screen et directement reprendre votre travail ou vous en étiez sans perte de temps.

Exemple de situation : Vous vous trouvez par exemple au bureau en train d'éditer des fichiers de configuration ou diverses sources, vous avez en même temps sur un autre terminal virtuel screen un calcul qui tourne... Au moment de partir vous vous rendez-compte que vous aller perdre beaucoup de temps à retrouver exactement l'endroit ou vous en étiez de vos sources, et de plus votre calcul devra être interrompu. Avec screen, il vous suffit de vous détacher du serveur sur lequel vous travaillez et de vous y rattacher une fois à votre domicile. Vous retrouverez ainsi tout vos terminaux dans l'état exacte dans lequel ils étaient à votre bureau. Screen vous permet également d'éviter de perdre votre session de travail par exemple dans le cas d'une perte de connectivité wifi !

Screen est très simple d'utilisation. Il repose sur une suite de commandes à mémoriser. Une fois que vous vous serez fait la main avec screen vous ne pourrez plus vous en passer.

Création et gestion de sessions

Pour lancer screen, vous devez simplement taper la commande suivante:


$ screen

Cette commande va vous lancer un nouveau shell. Qui est un shell tout à fait normal. Le seul point à noter est que dans un shell normal C-a vous ramenne au début de ligne, maintenant pour revenir en début de ligne il faudra faire C-a a car la combinaison C-a correspond au début des commandes spécifiques à screen.

Pour vous détacher de votre session active la commande screen suivante vous sera très utile : C-a d (voir liste des commandes ci dessous)

Pour vous rattacher à une ancienne session screen:


$ screen -r

Vous avez peut être plusieurs sessions screen en simultanées. Vous pouvez les lister avec la commande suivante:


$screen -ls

qui vous donnera le résultat suivant:


There are screens on:
	30172.pts-0.user	(Detached)
	30150.log	(Attached)
	27130.mail	(Detached)
3 Sockets in /var/run/screen/S-user.

il ne vous restera plus qu'à vous rattacher en faisant:


$ screen -r PID

Options au lancement de screen

screen -S title screen  nommer sa session screen
screen -ls list screen  lister les session presentes sur la machine
screen -r attache screen  s'attacher à une session screen
screen -d detache screen  detacher une session screen distante
screen -x Attach to a not detached screen session. (Multi display mode). s'attacher à une session screen sans détacher l'autre attachement, permet d'utiliser la même session sur différentes machines en même temps

Certaines de ces options peuvent êtres combinées comme 'screen -rd' pour à la fois détacher une session distante tout en s'y rattachant sur l'hôte.

Commandes sous screen

Comme indiqué ci dessus, la combinaison de touches C-a vous permet de rentrer dans le mode de commande de screen. C-a suivi d'une autre touche lancera donc une commande spécifique à screen. Voici un tableau récapitulatif des principales commandes screen.

C-a c create créer un nouveau terminal virtuel screen
C-a p previous aller au terminal virtuel précédent

C-a n

C-a <space>

next aller au terminal virtuel suivant
C-a S split découper l'affichage en deux parties égales afin d'afficher deux terminaux virtuels
C-a A title ajouter un titre au descriptif du terminal virtuel
C-a n (n number)   afficher le terminal virtuel n
C-a <tab>   changer de terminal virtuel
C-a "   affiche le sélecteur de fenêtres
C-a C-a   afficher le terminal virtuel précédemment sélectionné
C-a [ copy-mode une fois rentré dans ce mode vous vous retrouvé avec un curseur à placer au début de la zone qui vous intéresse, ensuite une pression sur la barre espace nous ouvre un buffer de sélection. Il ne vous reste qu'à délimiter la zone qui vous intéresse et la fermer à l'aide de la touche <entrée>. Une fois cette manipulation terminée vous avez copié la sélection dans votre buffer.
C-a ] paste colle la sélection présente dans le buffer
C-a < read buffer from file  lie le buffer placé dans /tmp/screen-exchange
C-a > send buffer to file  copie le buffer placé dans /tmp/screen-exchange
C-a d detach détacher la session de terminaux virtuel screen courante
C-a x lock protège par mot de passe la session active
C-a ? key map affiche le mappage des touches
C-a k kill tue le terminal virtuel actif

notes : C- représente la touche ctrl donc lorsque j'indique C-a j'indique qu'il faut appuyer sur la touche ctrl, la maintenir et appuyer sur a. Si j'indique C-a k il faudra appuyer sur la touche ctrl, la maintenir et appuyer sur a relâcher le tout et appuyer sur k.

Fichier de conf .screenrc

Voici mon .screenrc. Les commentaires sont en anglais mais plus proches du man.

# Time-stamp: <2008-08-20 22:01:16 lecocq> # emacs auto Time-stamp: comment

startup_message off     # set if you want to see copyright notice at startup (default on)
vbellwait 0.1           # delay in seconds after each display of bell message (default 1s)
vbell_msg "*ding*"      # Sets the visual bell message. (default "Wuff, Wuff!!")
shell "bash"		  # use bash shell

# backtick : command executed, output command is print where you wanted in the hardstatus
# here sys.sh will give us kernel-name & kernel-release. sys.sh do only uname -sr
# this script is relaunch every 10 min (600s)
backtick 1 600 0 /bin/uname -sr# if activity is detected on an affected window switched into the background
# you will receive the activity notification message in the status line
# the window will also be marked with an ‘@’ in the window-status display
defmonitor on# change the way screen does highlighting for text marking and printing messages sorendition "+b wr" # bold blanc sur rouge# When any activity occurs in a background window that is being monitored
# screen displays a notification in the message line
activity "activity -> %n%f %t" # window number , flags of the window , window title # Defines the time message is displayed (default 5s) msgwait 10 # Sets the visual bell message. message is printed to the status line
# Without parameter, the current message is shown.
vbell_msg " *wtf?!* "
# hardstatus alwayslastline : screen reserve the lastline of the display for it
# %{b kw}%H : hostname : bold white, black backgroung
# %{r}%1` : backtick id 1 : red
# %{w}| : | : white
# %{g}%c : clock : green
# %{y}%d.%m.%Y : date : yellow
# %{g}%l : load : green
# For the last argument list, actually I dont understand all this parameters but,
# it permit to list all window and display activity on them
# %{-b kw}%u %-Lw%{= rW}%50> %n%f %t %{-}%+Lw%<
hardstatus alwayslastline "%{b kw}%H %{r}%1` %{w}| %{g}%c %{w}| %{y}%d.%m.%Y %{w}| %{g}%l %{w}| \ %{-b kw}%u %-Lw%{= rW}%50> %n%f %t %{-}%+Lw%<" # note dans la ligne ci-dessu : le \ est un retour a la ligne d'affichage il faut le supprimer et tout mettre # sur une seule ligne

 

Edit : 29 mars 2009

 

Problème de backspace avec screen sous Ubuntu source :

the-asw

 

La touche d’effacement (backspace) ne fonctionne pas avec screen dans le terminal par défaut de Ubuntu. Pour corriger le problème, aller dans le menu “Editer > Préférénces”, dans la partie “Avancé” et choisir “La touche Retour arrière émet : Control-H”.

 

L'article précédent est en partie inspiré à la fois une traduction d'un article du stubbleblog et d'un autre de aymanh. J'y ajoute bien sur mon expérience de plus de 5 années d'utilisation de screen. Et un peu de man et de doc, ca fait jamais de mal un petit coup de man. Sinon un dernier lien externe sur screen présentant un exemple très interressant de site expliqué en images ! blogamundo.

 

Actions sur le document

mise a jour

Posted by Michel Le Cocq at Sep 12, 2008 10:17 AM
mise à jour du screenrc supression du script qui faisait un uname -sr

highlight certain email addresses in my tree

Posted by Michel Le Cocq at Apr 02, 2009 12:13 PM
consult the "Using Colors" & "Patterns" sections of "manual.txt". Example:

 color index cyan default '~f her@herplace.com'

http://wiki.mutt.org/?MuttFaq/Appearance

Outils personnels