Une commande indispensable pour bien administrer ses serveurs, j’ai nommé la commande screen.
Le principe est simple : si on se connecte en ssh et qu’on lance une commande ou un processus, la fermeture de la fenêtre provoque l’arrêt du processus en question. On va donc utiliser screen pour remédier à ce problème.

Installation

apt-get install screen

Utilisation

Pour une première utilisation, je propose de suivre un exemple concret. On se connecte en ssh sur un serveur, ce qui ouvre une console qu’on appellera console principale.

  • on commence par s’assurer qu’il n’y a aucun screen en cours dans la console principale
    screen -ls
  • puis on lance screen avec la commande screen
  • on se retrouve désormais dans la fenêtre de screen. Avec espace on crée une nouvelle console screen
  • on a maintenant deux consoles : la console screen et la console principale
  • deux possibilités pour revenir à la console principale :
    • en faisant Ctrl+A puis D on revient à la console principale tout en « détachant » la console screen
    • en tapant exit, on ferme la console screen et on revient à la console principale
  • on choisit de revenir à la console principale en détachant la console screen, on fait donc Ctrl+A puis D

Voilà, on vient de créer deux consoles dont une qui va survivre à la fermeture de la session ssh. Maintenant, lors d’une prochaine connexion ssh, on va se retrouver dans la console principale. On commence par lister les consoles disponibles :

$ screen -ls
There are screens on:
	1235.pts-1.ladameduweb1	(25/02/2019 21:30:33)	(Detached)
	1224.pts-1.ladameduweb1	(25/02/2019 21:30:16)	(Detached)
2 Sockets in /var/run/screen/S-root.

On voit qu’on a deux consoles détachées. Pour reprendre (rattacher) l’une des deux consoles :

$ screen -r 1224

On vient de rattacher la console de pid 1224, qui est une console screen. Lister les consoles disponibles depuis une console screen :

$ screen -ls
There are screens on:
        4188.pts-1.ladameduweb1 (25/02/2019 21:49:28)   (Detached)
        1224.pts-1.ladameduweb1 (25/02/2019 21:30:17)   (Attached)

Ah ! On voit bien que la console de pid 1224 est désormais rattachée. Maintenant, pour fermer la console de pid 1224, on tape simplement exit. Cela provoque le retour à la console principale.

Principales commandes

Principales commandes à partir de la console principale:

  • screen : lance un screen
  • screen -r [pid] : reprends (rattache) le screen pid précédemment détaché
  • screen -ls : liste les screens

Principales commandes à partir d’une console screen :

  • Ctrl+A puis D : détache la console screen et revient sur la console principale
  • Ctrl+D ou exit: ferme la console screen. Lorsqu’il n’y a plus qu’une seule console, screen est arrêté
  • Ctrl+P : passer à la console screen précédente
  • Ctrl+N : passer à la console screen suivante
  • screen -X -S [pid] kill: termine un screen encore attaché (suite à une perte de connexion par exemple)