Screen : Les commandes les plus utilisées

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search

1 Introduction

Screen est vraiment géniale, mais si on ne l'utilise pas tous les jours, alors on perd vite ses repères. Screen sert à garder une session ouverte avec pourquoi pas une application qui tourne dessus. Lorsqu'on quitte la fenêtre et qu'on y revient plus tard, notre appli tourne toujours et nous pouvons reprendre totalement la main dessus.

Je met en garde car, j'en ai vu plus d'un faire ça, mais screen n'est pas un équivalent de nohup !!!

2 Installation

Comme dab :

apt-get install screen

3 Utilisation

Voici donc les principales commandes que j'utilise (c-a = Ctrl+a) :

c-a c   nouvelle fenêtre
c-a k   fermer une fenêtre
c-a p   précédente fenêtre
c-a n   fenêtre suivante
c-a d   détacher (laisser screen tourner en fond de tache)
c-a "	affiche toutes les fenêtres disponibles
c-a [0-9] aller à la fenêtre 0-9
c-a S Diviser l'écran
c-a <tabulation> passer à la fenêtre suivante
c-a X Fermer la fenêtre divisée
c-a q Fermer toutes les fenêtres divisées
c-a M Monitorer une fenêtre

3.1 Muti-utilisateurs

3.1.1 Methode 1

Sur la première machine, faire un screen avec l'utilisateur toto :

screen

Puis depuis une deuxième machine, se connecter en ssh directement avec l'utilisateur toto puis faire :

screen -x

Maintenant les 2 personnes peuvent interréagir directement ensemble.<br / Il existe également des ACL pour screen.

3.1.2 Methode 2

Using screen in multiuser mode requires screen to be as setuid root. If you know about the potential security implications you can enable it by issuing

chmod u+s `which screen`
chmod 755 /var/run/screen

We need to configure screen to use multiuser mode and change privileges for the guest. Put the following commands into ~/.screenrc. You can also use them in a screen session after pressing CTRL-a :

multiuser on
aclchg snoopy -x "?"    #Revoke permission to execute any screen command
aclchg snoopy +x "wall" #Allow writing simple messages in the terminal status line
aclumask snoopy-wx      #Default permissions to windows
acladd snoopy           #Enable user snoopy to access screen session

Start screen :

[email protected] $ screen
[email protected] $ screen -ls
There is a screen on:
       11521.pts-4.hostname      (Multi, attached)
1 Socket in /var/run/screen/S-user.

Now the guest can attach to the screen :

screen -r user/11521

3.1.3 ACL

Pour autoriser toto a voir la session sans pour autant pouvoir agir :

aclchg toto -w "#?"

Par défaut, les permissions sont "rwx". Voici d'autres exemples très compréhensibles :

aclchg toto -wx "#?"
aclchg toto +x "detatch,wall,colon"

La dernière commande n'autorise que certaines options à être exécutées. Wall permet de passer des messages sur tous les écrans connectés.

4 Configuration

4.1 .screenrc

Pour voir ma configuration de screen, je vous invite à aller voir sur mon git : http://git.deimos.fr

Pour ce qui est des possibilités de configuration du fichier screenrc, voici un petit reminder :

Colors in screenrc
------------------
 0 Black             .    leave color unchanged
 1 Red               b    blue
 2 Green             c    cyan
 3 Brown / yellow    d    default color
 4 Blue              g    green           b    bold
 5 Purple            k    blacK           B    blinking
 6 Cyan              m    magenta         d    dim
 7 White             r    red             r    reverse
 8 unused/illegal    w    white           s    standout
 9 transparent       y    yellow          u    underline
note: "dim" is not mentioned in the manual.
 
STRING ESCAPES
--------------
 %%      percent sign (the escape character itself)
 %a      either 'am' or 'pm' - according to the current time
 %A      either 'AM' or 'PM' - according to the current time
 %c      current time HH:MM in 24h format
 %C      current time HH:MM in 12h format
 %d      day number - number of current day
 %D      Day's name - the weekday name of the current day
 %f      flags of the window
 %F      sets %? to true if the window has the focus
 %h      hardstatus of the window
 %H      hostname of the system
 %l      current load of the system
 %m      month number
 %M      month name
 %n      window number
 %s      seconds
 %t      window title
 %u      all other users on this window
 %w      all window numbers and names.
 %-w     all window numbers up to the current window
 %+w     all window numbers after the current window
 %W      all window numbers and names except the current one
 %y      last two digits of the year number
 %Y      full year number

5 References

File:Au-gnu screen-pdf.pdf