Je suppose que vous le savez tous :vous êtes connecté à votre serveur avec SSH et en train de compiler un logiciel (par exemple un nouveau noyau) ou d'effectuer une autre tâche qui prend beaucoup de temps, et tout à coup votre connexion tombe pour une raison quelconque, et vous perdez votre travail inachevé. Cela peut être très ennuyeux, mais heureusement, il existe un petit utilitaire appelé screen qui vous permet de vous rattacher à une session précédente afin que vous puissiez terminer votre tâche. Ce court tutoriel montre comment utiliser l'écran dans ce but précis.
1 Installation de la commande screen
L'installation de l'écran est très facile. Sur Debian, exécutez :
apt-get install screen
Pour Ubuntu, utilisez la commande avec sudo :
sudo apt-get install screen
Et pour Fedora, CentOS, SuSE et Mandriva, il existe également des packages d'écran que vous pouvez installer avec yum/yast/urpmi/...
Fedora et CentOS
yum install screen
2 Utilisation de la commande screen
Avec screen vous pouvez créer une ou plusieurs sessions dans votre terminal SSH actuel. Courez simplement
screen
pour le démarrer. Cela crée une session d'écran ou une fenêtre (bien que vous ne la voyiez pas comme telle) dans votre terminal SSH actuel :
Appuyez sur Espace ou Retour pour accéder à l'invite de commande :
Ressemble à votre terminal SSH normal, n'est-ce pas ?
Je vais maintenant décrire les commandes d'écran les plus importantes dont vous avez besoin pour contrôler l'écran. Ces commandes commencent par CTRL a pour les distinguer des commandes shell normales.
- Ctrl a c - Crée une nouvelle session d'écran afin que vous puissiez utiliser plusieurs sessions d'écran à la fois.
- Ctrl a n - Passe au n session d'écran externe (si vous en utilisez plusieurs).
- Ctrl a p - Passe au p session d'écran précédente (si vous en utilisez plusieurs).
- Ctrl a d - Détache une session d'écran (sans tuer les processus qu'elle contient - ils continuent).
Pour fermer une session d'écran où toutes les tâches sont terminées, vous pouvez taper
exit
Maintenant, jouons un peu avec. Dans notre fenêtre d'écran, nous exécutons la commande
top
Cela devrait ressembler à ceci :
Créons maintenant une autre session d'écran en tapant
Ctrl a c
Une nouvelle session d'écran vide s'ouvre, et c'est parti
tail -f /var/log/mail.log
pour consulter en permanence notre journal de messagerie :
Vous pouvez maintenant parcourir vos sessions à deux écrans en exécutant
Ctrl a n
ou
Ctrl a p
Pour détacher une session d'écran et revenir à votre terminal SSH normal, tapez
Ctrl a d
De retour sur votre terminal SSH normal, vous pouvez exécuter
screen -ls
pour obtenir une liste de vos sessions d'écran en cours :
There are screens on:
2477.pts-0.server1 (Detached)
2522.pts-0.server1 (Detached)
2 Sockets in /var/run/screen/S-root.
Pour vous reconnecter à l'une de ces sessions, exécutez
screen -r 2477.pts-0.server1
où 2477.pts-0.server1 est le nom de l'une des sessions de la sortie screen -ls.
Pour quitter et terminer une session d'écran, terminez toutes les tâches en cours (top peut être terminé en tapant q, tail -f /var/log/mail.log peut être terminé en tapant CTRL c) puis tapez
exit
Vous reviendrez alors à une autre session screen (si vous en utilisez plusieurs) ou au terminal SSH normal, si plus aucune session screen n'est ouverte.
Si vous voulez en savoir plus sur l'écran, lancez
man screen
3 Ma connexion est interrompue :que puis-je faire ?
Supposons maintenant que vous compilez un noyau dans une session screen, ce qui prend normalement beaucoup de temps, et que soudainement votre connexion s'interrompt. Grâce à screen votre travail n'est pas perdu. Une fois votre connexion rétablie, connectez-vous à nouveau à votre système avec SSH et exécutez
screen -ls
comme indiqué au chapitre 2. Dans les résultats, sélectionnez une session (par exemple, 2477.pts-0.server1) et rattachez-la :
screen -r 2477.pts-0.server1
Si vous avez choisi la bonne session, vous devriez trouver votre noyau en cours de compilation (s'il n'est pas terminé entre-temps) afin que vous puissiez continuer votre travail.
4 liens
- écran :http://www.gnu.org/software/screen