B.A-BA de la commande « screen »

closeCet article a été publié il y a 17 ans 6 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

J’explique très succintement quelques commandes majeures de cet outil qui permet de « détacher des sessions shell du terminal où vous les avez lancées ».
En clair : lorsque vous avez des outils en mode texte sur lesquels vous devez pouvoir revenir à distance et plus tard, vous lancez vos commandes dans un « screen » et lorsque vous fermez votre terminal (session putty distante, locale dans un xterm etc), la session reste stockée quelque part et vous pourrez la reprendre de manière interactive (clavier) plus tard.

C’est pratique pour gérer de lourds transferts FTP en mode texte (genre lftp) et surtout – dans mon cas – pour gérer mes serveurs de jeux online 😉
Je vais bientôt poster 2/3 articles sur la mise en place de quelques serveurs de jeux online et « screen » est un outil indispensable.

Le principe de base :
Vous lancez une session en lui donnant un nom :

screen -S ma_session

On ne le remarque pas trop quand on n’est pas habitué, mais ça ouvre un autre shell.
Vous faites ce que vous avez à faire dedans, ici on va se limiter à une commande ls histoire de faire afficher quelque chose.
Puis vous « détacher » la session grâce à la combinaison de touches CTRL-A puis D (sans lâcher CTRL).
Ca vous sort de la session et vous voyez le mot :

[detached]

Vous pouvez alors lister vos sessions :

screen -ls
There are screens on:
        20850.ma_session        (Detached)
1 Socket in /var/run/screen/S-toto.

Les numéros sont les PID des shells correspondant à votre session.

Pour reprendre une session (on va nettoyer l’écran pour bien se rendre compte : commande clear)

screen -r ma_session

Et là vous retrouvez votre session de toute à l’heure, avec le contenu du ls.

Ok ? principe pigé ?

Documentez-vous sur le paramètre « -x », il est terrible celui-là ainsi que sur la combo de touches à faire pour pouvoir remonter dans l’historique de la session, à base de CTRL-A + Esc + CTRL-U ou D. Enfin bref, je ne m’en souviens jamais 🙂

11 comments

  1. RTFM ? 😉

    Exemple : screen -S toto -d -m tail -f /var/log/syslog
    Ensuite screen -ls pour contrôler

    On peut remplacer -d par -D, ça fait en sorte que le screen ne termine pas quand la commande (dans l’exemple : tail -f) termine.

    Ensuite, pour automatiser, il faudrait encapsuler tout ça dans un joli script, le coller dans /etc/init.d, faire les raccourcis /etc/rc?.d qui vont bien.
    J’ai pas trop cherché, ma machine reboot peu/pas 🙂

  2. Bonjour,
    comment faire pour tuer le screen quand on en a plus besoin ?
    (il doit bien y avoir une commande simple non sans passer par un kill?)

  3. Bonsoir,
    je pense que cette fonction n’est pas forcement utile ,
    autant utiliser crt+shift+t pour afficher un onglet de plus
    et crt+shift+n pour afficher un nouveau terminal, alors cette fonction….

    1. ??? Ça n’a juste rien à voir… Là on parle de lancer une commande, en général à distance sur un serveur, eh de pouvoir tout fermer et revenir plus tard. Une nouvelle fenêtre, un nouvel onglet, c’est pour faire mumuse sur un ordinateur…

  4. Bonsoir, J’ai un serveur Maniaplanet avec Xaseco2, sur un Nas synology DS214Play. Je rencontre un problème avec Xaseco2, quand je quitte le terminal SSH (Putty) Xaseco2 cesse de fonctionné. Je pence que la méthode est la solution à mon problème, mais je ne comprend pas comment il faut si prendre?

    1. Salut,
      oui alors dans un contexte NAS, aucune idée car les dernières fois que j’ai joué avec ce type de matériel, il n’y avait pas forcément toute la panoplie d’outils linux qu’on aimerait.
      Toujours est il, s’il y a sur ce NAS un accès SSH, s’y connecter et voir si la commande screen répond. Si oui, banco. Sinon voir si ça peut s’installer.
      Au pire, mais c’est peu foireux :
      1) lancer le serveur genre ./mon_serveur.sh -blabla & # le & pour lancer en tâche de fond et advienne que pourra (on ne peut plus reprendre la main)
      2) voir s’il y a un truc pour ajouter des programmes complémentaires sur ce NAS et voir si des paquets sont dispo, dont screen

      bonne chance

  5. Ok dac,
    Merci bien pour cette réponse rapide, et ces quelques infos qui vont probablement beaucoup m’aider ! 🙂
    Je vais regarder tout ça.
    A première vue la commande « screen » ne fonctionne pas sur mon terminal « SSH ».
    Milton a parlé de « débian » qui existe en paquet pour les « Nas Synology », et « IPKG » existe aussi. (Rien à voir j’imagine? Je ne trouve plus où j’ai vu parler de « IPKG »)

    PS: Je suis débutant, je possède ce Nas Synology depuis quelques mois seulement, et découvre que depuis peu les joies des systèmes « Linux ». Si vous pourriez me guider vers des tutoriaux pour faciliter mes recherches ce serait TOP.

    1. ipkg, c’était ça
      par contre c’est tout ce qu’il m’en reste comme souvenirs. Mais ça permettait en effet d’installer d’autres outils complémentaires qui manquait dans le linux de base embarqué dans le NAS
      cherchez sur google avec votre modèle (ou fabricant) + ipkg + screen par exemple
      bonne chance

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.