Avez-vous déjà été confronté à une situation où vous exécutez une tâche de longue durée ( comme un script shell qui pouvait prendre plusieurs heures pour se dérouler complètement) sur une machine linux distante, et soudainement votre connexion tombe, la session SSH est interrompue et votre travail est perdu. Eh bien, cela nous est arrivé à tous à un moment donné, n’est-ce pas?
Heureusement, il existe un utilitaire appelé Screen Linux qui permet aux process de continuer à s’exécuter même après une déconnexion. C’est ce que nous allons voir dans cet article.
A quoi sert-il ?
Screen est un multiplexeur de terminaux, c’est à dire que vous démarrer une session et y ouvrir plusieurs terminaux. L’importance de Screen est que les process continue à s’exécuter même en cas de déconnexion.
Installation :
Vous pouvez installer screen facilement avec la gestionnaire de packages (dnf et apt get) de votre distribution :
Ubuntu et Debian :
#sudo apt-get install screen
CentOS and Fedora/Redhat :
#sudo dnf install screen
Vous pouvez vérifier la version avec la commande ci-dessous :
root@Linux:~# screen --version
Screen version 4.06.02 (GNU) 23-Oct-17
Lancer Screen Linux :
Pour démarrer « Screen » il suffit de taper la commande :
root@Linux:~# screen
Si vous avez besoin de créer plusieurs session Screen , je vous conseil dans ce cas de la renommer :
#screen -S Nom_session
Et voila notre Screen session et maintenant démarrer.
Comment travailler avec Screen :
Lorsque vous démarrer Screen, un shell est créé, vous pouvez créer plusieurs shell dans un même screen avec « Ctrl+a c », le premier numéro disponible de la plage 0 … 9 lui sera attribué :
Pour voir tous les shell que vous avez créé taper Ctrl+a » .
Voici les commande les plus utilisé pour gérer Screen :
- Ctrl+a c Create a new window (with shell)
- Ctrl+a » List all window
- Ctrl+a 0 Switch to window 0 (by number )
- Ctrl+a A Rename the current window
- Ctrl+a S Split current region horizontally into two regions
- Ctrl+a | Split current region vertically into two regions
- Ctrl+a tab Switch the input focus to the next region
- Ctrl+a Ctrl+a Toggle between the current and previous region
- Ctrl+a X Close the current region
Se détacher d’une Screen Linux :
Vous pouvez vous détacher d’une Screen avec la commande Ctrl+a d :
root@Linux:~# screen
[detached from 12234.pts-9.Linux]
Le programme en cours d’exécution dans la session Screen continuera à s’exécuter même si vous êtes déconnecté de la session.
Reprendre votre screen :
Pour reprendre votre screen, utilisez la commande suivante:
root@Linux:~#screen -r
Si vous avez lancé plusieurs screen vous aurez un message vous indiquant tout les screen auquel vous êtes détacher et vous demande d’en choisir un :
root@Linux:~# screen -r
There are several suitable screens on:
12234.pts-9.casa-os-7 (24/12/2020 08:17:33) (Detached)
6199.pts-19.casa-os-7 (22/12/2020 08:15:51) (Detached)
6118.pts-19.casa-os-7 (22/12/2020 08:13:06) (Detached)
5760.pts-9.casa-os-7 (22/12/2020 07:50:48) (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
Pour reprendre un screen il suffit d’indique sont ID :
root@Linux:~# screen -r 12234
Vous pouvez affichier tous les screen auquel vous êtes détaché et avec la commabde :
root@linux:~# screen -ls
There are screens on:
12234.pts-9.casa-os-7 (24/12/2020 08:17:33) (Attached)
6199.pts-19.casa-os-7 (22/12/2020 08:15:51) (Detached)
6118.pts-19.casa-os-7 (22/12/2020 08:13:06) (Detached)
5760.pts-9.casa-os-7 (22/12/2020 07:50:48) (Detached)
4 Sockets in /run/screen/S-root.
nmap : les 12 commandes que vous devez connaître
Le fonctionnement du routeur
Iptables : 12 commandes à connaître
Le montage sous linux
Fail2Ban : How to protect Linux services