GNU/Linux >> Tutoriels Linux >  >> Linux

4 façons de maintenir une commande en cours d'exécution après la déconnexion de la session SSH

Disons que vous accédez à distance à un autre système via SSH. Vous souhaitez exécuter une commande qui prend beaucoup de temps à se terminer, puis quitter la session SSH, mais laisser la commande en cours d'exécution même si vous n'êtes plus connecté au système distant. Comment tu fais ça? Comme vous le savez peut-être, une fois que vous quittez le SSH, toutes les tâches en cours d'exécution seront terminées. Souhaitez-vous commencer le travail depuis le début ? Vous n'êtes pas obligé. Ici, j'ai donné 4 méthodes pour maintenir une commande en cours d'exécution après la déconnexion de la session ssh. Continuez à lire.

Conserver une commande en cours d'exécution après la déconnexion de la session SSH sous Linux

Il pourrait y avoir plusieurs façons de le faire. Cependant, je trouve que les méthodes suivantes sont simples et directes.

Méthode 1 - Utiliser l'écran

L'écran tool, un gestionnaire de fenêtres plein écran avec émulation de terminal VT100/ANSI, vous permet de vous détacher en toute sécurité de la session SSH sans quitter le travail à distance. Il sera utile pour ceux qui travaillent avec plusieurs serveurs distants. La commande Screen est préinstallée dans la plupart des systèmes d'exploitation Linux. Au cas où, s'il n'est pas installé, vous pouvez l'installer à l'aide du gestionnaire de packages de votre distribution.

Sur Arch Linux et dérivés :

$ sudo pacman -S screen

Sur RHEL, CentOS et d'autres systèmes basés sur RPM :

$ sudo yum install screen

Sur Debian, Ubuntu et d'autres systèmes basés sur DEB :

$ sudo apt-get install screen

Sur SUSE/OpenSUSE :

$ sudo zypper install screen

Après avoir installé screen sur vos systèmes distants, démarrez la session screen :

$ screen

La session d'écran a maintenant démarré. Maintenant, exécutez le travail ou la tâche que vous vouliez faire sur votre système distant.

Je vais télécharger l'image Ubuntu 16.04 :

$ wget http://mirror.waia.asn.au/ubuntu-releases/xenial/ubuntu-16.04.2-desktop-amd64.iso

Ubuntu 16.04 ISO a une taille d'environ 1,5 Go. Il faudra près d'une heure pour télécharger dans une connexion haut débit normale. Vous n'avez pas à attendre aussi longtemps. Laissez simplement le processus de téléchargement en cours d'exécution sur le système distant et quittez la session d'écran en appuyant sur "Ctrl-A" suivi de "d" . Vous verrez une sortie comme ci-dessous.

[detached from 1365.pts-0.server]

Après vous être déconnecté de la session d'écran, vous pouvez vous déconnecter du système distant. La tâche distante continuera de s'exécuter sur le serveur.

Vous pouvez vous reconnecter à la session d'écran à tout moment à l'aide de la commande :

$ screen -r

Vous verrez que le processus est toujours en cours d'exécution.

Si vous avez plus d'une session d'écran, vous devez saisir l'ID de la session d'écran afin de vous y rattacher. Pour afficher le nombre de sessions d'écran, exécutez :

$ screen -ls

Exemple de sortie :

There are screens on:There are screens on: 
     1382.pts-0.server (Saturday 15 July 2017 04:39:51  IST) (Detached) 
     1365.pts-0.server (Saturday 15 July 2017 04:38:44  IST) (Detached)
2 Sockets in /var/run/screen/S-sk.

Maintenant, rattachez-vous à la session d'écran souhaitée, dites 1382 , exécutez :

$ screen -r 1382

Pour plus de détails, consultez les pages de manuel.

$ man screen
Téléchargement recommandé - Cheat Sheet gratuit :"Linux Command Line Cheat Sheet"

Méthode 2 - Utilisation de tmux

Le tmux est un multiplexeur de terminaux qui permet de créer, d'accéder et de contrôler plusieurs terminaux à partir d'un seul écran. Une session tmux peut être détachée d'un écran et continuer à s'exécuter en arrière-plan, puis être rattachée ultérieurement. Comme l'outil Screen, vous pouvez également utiliser tmux pour vous détacher d'une session SSH sans quitter les tâches distantes. La commande Tmux est préinstallée sur la plupart des systèmes d'exploitation Linux. Au cas où, s'il n'est pas installé, vous pouvez l'installer à l'aide du gestionnaire de packages de votre distribution.

Sur Arch Linux et dérivés :

$ sudo pacman -S tmux

Sur RHEL, CentOS et d'autres systèmes basés sur RPM :

$ sudo yum install tmux

Sur Debian, Ubuntu et d'autres systèmes basés sur DEB :

$ sudo apt-get install tmux

Sur SUSE/OpenSUSE :

$ sudo zypper install tmux

Après avoir installé tmux, démarrez la session tmux à l'aide de la commande :

$ tmux

Maintenant, commencez votre tâche ou votre travail. Ensuite, détachez-vous en toute sécurité de la session tmux sans quitter les tâches distantes en appuyant sur "CTRL-b" suivi de "d" . Cela détachera votre session tmux mais vous laissera faire dans cette session en arrière-plan. Cela signifie que toutes les télécommandes fonctionneront même si vous êtes déconnecté de la session.

Pour répertorier les sessions disponibles, exécutez :

$ tmux ls
0: 1 windows (created Sat Jul 15 16:51:35 2017) [134x33]
1: 1 windows (created Sat Jul 15 16:53:58 2017) [134x33]

Vous pouvez vous rattacher à la session tmux à l'aide de l'ID de session respectif, comme indiqué ci-dessous :

$ tmux attach -t 0

Pour plus de détails, consultez les pages de manuel.

$ man tmux

Méthode 3 - Utiliser Reptyr

Que faire si vous avez oublié de démarrer les commandes dans screen/tmux en premier lieu ? Pas de soucis. C'est ici que Reptyr vient en aide. Reptyr vous aide à déplacer les processus en cours d'exécution entre les ptys. Nous avons déjà publié un guide détaillé sur Reptyr. Consultez le lien suivant.

  • Reptyr – Déplacer un processus en cours d'exécution d'un terminal à un autre sans le fermer

Méthode 4 - Utiliser nohup

non hop , signifie Non h angvers le haut , est un autre utilitaire de ligne de commande pour vous aider à exécuter des commandes Linux même après avoir été déconnecté des sessions SSH. Comme il fait partie de GNU coreutils, vous n'avez pas besoin de l'installer. Il est préinstallé dans toutes les distributions Linux.

L'utilisation est absolument facile. Après vous être connecté à votre système distant, il vous suffit de :

$ nohup <command> &

Oui, c'est aussi simple que cela.

Exemple :

$ nohup wget http://mirror.waia.asn.au/ubuntu-releases/xenial/ubuntu-16.04.2-desktop-amd64.iso &

Maintenant, vous pouvez quitter la session SSH. Le travail à distance continuera de s'exécuter.

Connectez-vous au système distant et exécutez ce qui suit pour afficher la liste des tâches en cours d'exécution.

$ jobs -l
[1]+ 1421 Running nohup wget http://mirror.waia.asn.au/ubuntu-releases/xenial/ubuntu-16.04.2-desktop-amd64.iso &

Par défaut, les sorties seront ajoutées à 'nohup.out'. Vous pouvez, bien sûr, modifier le fichier de sortie.

Voici un autre exemple.

$ nohup find -size +10M > log.txt &

La commande ci-dessus trouvera les fichiers dont la taille est supérieure à 10 Mo et écrit la sortie dans le fichier log.txt.

Pour plus de détails, reportez-vous aux pages de manuel.

$ man nohup

Et c'est tout pour le moment les amis. Vous avez quelque chose en tête ? N'hésitez pas à me le faire savoir dans la section des commentaires ci-dessous. Plus de bonnes choses à venir. Continuez à visiter !

Santé !


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. 4 conseils pour vous aider à tirer le meilleur parti de la commande Linux df

  3. Comment faire en sorte qu'un programme continue à s'exécuter après la déconnexion de ssh ?

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

  5. Faire une commande de longue durée sur ssh

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

4 façons de se déconnecter d'une session de bureau Ubuntu

Comment maintenir les sessions SSH à distance en cours d'exécution après la déconnexion

Comment déconnecter un utilisateur de SSH sous Linux

Comment installer et utiliser la commande d'écran Ubuntu 20.04

Comment augmenter le tampon de défilement dans une session d'écran en cours d'exécution ?