Screen permet de faire fonctionner des applications en arrière plan en laissant le terminal disponible pour d'autres application.

Comment utiliser Screen ?


Connectez vous en local sur votre raspberry ou par ssh avec l'utilisateur pi. Vous pouvez aussi prendre n'importe quel utilisateur avec les droits sudo.

Nous allons installer le paquet : screen :

sudo apt-get install screen

Liste des commandes importante pour utiliser Screen :

Commande Description
screen -lsAffiche les screens ouvert
screen -drRécupérer un screen ouvert
ctrl+aCommande principale

Liste des options après avoir tapé la commande principale ctrl+a

Description
Affiche la liste des screens
wNous informe sur quel screen nous sommes
dDétache le screen actuel
cCréer un nouveau Screen
shift+ARenomme le Screen courant

Prise en main de Screen :


Pour cet exemple, nous voulons utiliser le programme top dans un screen.

Si vous tapez top dans votre terminal, vous vous rendez compte que l'application top s'actualise toute seule il n'est plus possible d'utiliser le terminal sans avoir quitté l'application top avec le raccourcis : ctrl+c

Tapez dans le terminal :

screen

puis appuyez sur la touche entrée

Nous arrivons sur un terminal qui est similaire au terminal que vous connaissez mais celui ci est en fait un screen.

tapez votre commande top :

top

Sans surprise elle s’exécute normalement mais dans le screen en cours !

Tapez maintenant la commande principale ctrl+a suivit de la lettre d.

Nous venons de détacher le screen :

[detached from 5600.pts-0.tropfacile]

Nous retrouvons notre terminal d'origine et notre commande top est dans un screen.

Tapez maintenant la commande : screen -ls

screen -ls
There is a screen on:
	5600.pts-0.tropfacile	(18/09/2012 19:34:52)	(Detached)
1 Socket in /var/run/screen/S-pi.

On nous confirme qu'il y à bien un screen d'ouvert.

Nous voulons maintenant récupérer ce screen, nous tapons : screen -dr

screen -dr

Nous retrouvons instantanément la commande top là où nous l'avons laissé !

Pour quitter définitivement un screen il faut taper la commande :

exit

Veuillez faire attention quand vous tapez la commande screen car il est très facile de lancer plusieurs screen dans d'autre screen et ça devient vite le bordel :D

Aller plus loin...


Il est possible de lancer une commande directement dans un screen en tapant :

screen -dmS "nom du screen" "commande"

Exemple :

screen -dmS monitor sh ./start.sh

Si je tapes : screen -ls je vois bien que mon script est lancé dans un screen nommé monitor :

screen -ls
There is a screen on:
	5688.monitor	(18/09/2012 20:04:52)	(Detached)
1 Socket in /var/run/screen/S-pi.

Voilà pour l'utilisation de Screen cette note servira a 98% des demandes :)

N'hésitez pas à faire vos propres tests c'est comme ça que l'on avance!!!

Comments

Nickko
2013/01/31 23:25 reply

Est-ce différent de l'ajout du caractère & en fin de ligne qui lance les applications en arrière plan et laisse ainsi le terminal dispo pour autre chose ?

Nickko
2013/01/31 23:26 reply

Est-ce différent de l'ajout du caractère & en fin de ligne qui lance les applications en arrière plan et laisse ainsi le terminal dispo pour autre chose ?

panul
2013/02/01 02:53 reply

Euh, ça sert à quoi screen ?

Désolé mais j'en ai pas la moindre idée après toutes ces explications. Par contre je crois que saurai m'en servir maintenant !

Nickko
2013/02/01 08:04 reply

Si tu lances une application depuis un terminal, tu ne peux rien faire tant que tu n'as pas fermée l'application, si c'est VI que tu lances alors peu importe, mais un serveur par exemple, ça bloquerait ton terminal ou tu serais obligé de fermer le serveur pour continuer à travailler.

Sceen, sert entre autre à lancer un programme en tâche de fond.

La différence entre Screen et une bête tâche de fond, c'est que si tu fermes le terminal qui a lancé une bête tâche de fond alors celle-ci est killé quand tu fermes le terminal.

En revanche avec Screen, elle continue de tourner.

Ghost
2013/03/27 10:29 reply

@Nickko: Après avoir lancer : commande & ou programme & la tâche étant détachée du processus console, elle n'est pas killée par la fermeture du terminal.

Une autre méthode permet de passer une tâche en arrière plan : après avoir lancer le programme ou la commande il suffit de taper Ctrl+z on revient en console avec la tâche en arrière plan (mais stoppée) et ensuite taper bg puis valider, la tâche relance son exécution où elle en était en arrière plan. Pour la repasser en avant plan il suffit de taper en console fg et valider.

Bien sûr on peut quitter la console/terminal et les tâches en arrière plan continueront à fonctionner.

hiebel claude
2013/04/07 20:26 reply

il faut utiliser ~/.screenrc en particulier on peut ouvrir plusieurs consoles au lancement de screen. La puissance c'est les commandes par CTRL A <x> x=? pour l'aide. Avec un sudo su on peut même lancer une console root au démarrage. Screen est très utile sans une session ssh avec le RPi.

fr4nck
2013/04/11 16:58 reply

J'ai vu des utilisateurs du PI qui se servaient de screen pour toujours avoir leur “Raspcontrol” en activité. J'ai trouvé l'idée vraiment pas bête, peut être qu'il en sera autant pour vous ;)