GNU/Linux >> Tutoriels Linux >  >> Linux

Commande d'écran Linux :Maintenir les processus en cours d'exécution malgré une connexion interrompue

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.

  • écran :http://www.gnu.org/software/screen

Linux
  1. 5 façons de maintenir les sessions et les processus SSH à distance en cours d'exécution après la déconnexion

  2. Ssh - Continuer à exécuter les processus après la déconnexion de la session Ssh ?

  3. Comment tuer les processus en cours d'exécution sous Linux

  4. Comment arrêter un processus d'écran sous Linux?

  5. Reprendre la commande en cours d'exécution dans la session SSH abandonnée

Commande Pgrep sous Linux

Commande Linux PS avec exemples

Exécutez des processus d'arrière-plan sous Linux à l'aide de la commande Screen

Commande d'écran sur Linux expliquée

Commande Linux ps - 20 exemples concrets

commande fuser Linux avec des exemples