5 façons de maintenir des séances et processus SSH distants après la déconnexion

5 façons de maintenir des séances et processus SSH distants après la déconnexion

Ssh ou Enveloppe de protection En termes simples, un moyen par lequel une personne peut accéder à distance à un autre utilisateur sur un autre système, mais uniquement dans la ligne de commande I.e. mode non GUI. En termes plus techniques, lorsque nous ssh sur un autre utilisateur sur un autre système et exécutez des commandes sur cette machine, il crée en fait un pseudo-terminal et le joigne au shell de connexion de l'utilisateur connecté.

5 façons de faire fonctionner les sessions SSH après la déconnexion

Lorsque nous nous déconnectons de la session ou que la session épouse après avoir été inactif pendant un certain temps, le Faire un coup de pouce Le signal est envoyé au pseudo-terminal et tous les travaux qui ont été exécutés sur ce terminal, même les emplois qui ont leurs emplois de parent qui sont initiés sur le pseudo-terminal sont également envoyés le signal de simulation et sont obligés de résilier.

Ne manquez pas: 5 pratiques utiles pour garder le serveur SSH sécurisé et protégé

Seuls les travaux qui ont été configurés pour ignorer ce signal sont ceux qui survivent à la fin de la session. Sur Linux Systems, nous pouvons avoir de nombreuses façons de faire fonctionner ces travaux sur le serveur distant ou n'importe quelle machine même après la déconnexion et la terminaison de la session.

Comprendre les processus sur Linux

Processus normal

Les processus normaux sont ceux qui ont la durée de vie d'une session. Ils sont lancés pendant la session en tant que processus de premier plan et se retrouvent dans une certaine période de temps ou lorsque la session est déconnectée. Ces processus ont leur propriétaire comme l'un des utilisateurs valides du système, y compris Root.

Processus orphelin

Les processus orphelins sont ceux qui avaient initialement un parent qui a créé le processus, mais après un certain temps, le processus parent est décédé involontairement ou s'est écrasé, faisant de l'initiale le parent de ce processus. De tels processus ont une initiation comme leur parent immédiat qui attend ces processus jusqu'à ce qu'ils meurent ou finissent par.

Processus de démon

Ce sont des processus intentionnellement orphelins, ces processus qui sont intentionnellement en cours d'exécution sur le système sont appelés démon ou processus intentionnellement orphelins. Ce sont généralement des processus de longue date qui sont autrefois initiés puis détachés de tout terminal contrôlant afin qu'ils puissent fonctionner en arrière-plan jusqu'à ce qu'ils ne soient pas terminés, ou finissent par lancer une erreur. Le parent de ces processus meurt intentionnellement faire de l'enfant l'exécution en arrière-plan.

Techniques pour maintenir la session SSH après la déconnexion

Il peut y avoir différentes façons de laisser des sessions SSH en cours après la déconnexion comme décrit ci-dessous:

1. Utilisation de la commande d'écran pour faire fonctionner les sessions SSH

filtrer est un gestionnaire de fenêtres de texte pour Linux qui permet à l'utilisateur de gérer plusieurs sessions de terminaux en même temps, de basculer entre les sessions, de journaliser la session pour les sessions en cours ou le terminal fermé.

Les séances d'écran peuvent être démarrées, puis détachées du terminal de contrôle, les laissant courir en arrière-plan, puis reprendre à tout moment et même à n'importe quel endroit. Il suffit de démarrer votre session à l'écran et lorsque vous le souhaitez, détachez-le de pseudo-terminal (ou du terminal de contrôle) et déconnectez-vous. Lorsque vous vous sentez, vous pouvez redémarrer et reprendre la session.

Démarrage d'une session d'écran

Après avoir tapé 'filtrer' Commande, vous serez dans une nouvelle session d'écran, dans cette session, vous pouvez créer de nouvelles fenêtres, traverser entre Windows, verrouiller l'écran et faire beaucoup d'autres choses que vous pouvez faire sur un terminal normal.

$ écran 
Démarrage de la session d'écran dans Linux

Une fois la session d'écran démarrée, vous pouvez exécuter n'importe quelle commande et maintenir la session en cours d'exécution en détachant la session.

Exécuter les commandes en session d'écran
Détacher un écran

Juste lorsque vous souhaitez vous déconnecter de la session distante, mais que vous souhaitez garder la session que vous avez créée sur cette machine en vie, alors ce que vous devez faire est de détacher l'écran du terminal afin qu'il n'ait plus de terminal de contrôle à gauche. Après avoir fait cela, vous pouvez vous connecter en toute sécurité.

Pour détacher un écran du terminal distant, appuyez simplement sur "Ctrl + A" immédiatement suivi de "d" Et vous serez de retour au terminal en voyant le message que l'écran est détaché. Maintenant, vous pouvez vous connecter en toute sécurité et votre session sera laissée vivante.

Session d'écran Linux de détachement
Reprise de la session d'écran détaché

Si vous souhaitez reprendre une session d'écran détachée que vous avez quit «Écran -R» Dans le cas où un seul écran est ouvert, et si plusieurs séances d'écran sont ouvertes «Écran -R».

$ écran -r $ écran -r  
Reprendre la session d'écran détaché

Pour en savoir plus sur la commande d'écran et comment l'utiliser, suivez le lien: utilisez la commande d'écran pour gérer les sessions de terminal Linux

2. Utilisation de TMUX (Multiplexeur de terminal) pour faire fonctionner les séances SSH

Tmux est un autre logiciel créé pour remplacer filtrer. Il a la plupart des capacités de filtrer, avec peu de capacités supplémentaires qui le rendent plus puissant que l'écran.

Il permet, en dehors de toutes les options offertes par écran, divisant les volets horizontalement ou verticalement entre plusieurs fenêtres, redimensionner les vitres, surveillance de l'activité de session, script à l'aide du mode de ligne de commande, etc. En raison de ces caractéristiques de TMUX, il a joué un large adoption par presque toutes les distributions UNIX et même elle a été incluse dans le système de base d'OpenBSD.

Démarrer une session TMUX

Après avoir fait SSH sur l'hôte distant et tapé tmux, Vous entrerez dans une nouvelle session avec une nouvelle fenêtre ouvrant devant vous, où vous pouvez faire tout ce que vous faites sur un terminal normal.

$ tmux 
Démarrer la session de terminal TMUX

Après avoir effectué vos opérations sur le terminal, vous pouvez détacher cette session à partir du terminal de contrôle afin qu'il entre en arrière-plan et que vous puissiez vous déconnecter en toute sécurité.

Effectuez les commandes Linux dans la session TMux
Détachez la session TMUX à partir du terminal

Soit vous pouvez courir «TMUX Detach» Lors de l'exécution de la session TMUX ou vous pouvez utiliser le raccourci (Ctrl + b puis d). Après cela, votre session actuelle sera détachée et vous reviendrez sur votre terminal d'où vous pouvez vous déconnecter en toute sécurité.

$ tmux détach 
Détachez la session TMUX à Linux
Reprendre la session TMUX fermée

Pour rouvrir la session que vous avez détaché et laissé comme vous êtes-vous déconnecté du système, il suffit de redémarrer à la machine distante et de saisir «TMUX attach» pour rattacher à la séance à clôture et il sera toujours là et courira en cours d'exécution.

$ tmux joint 
Reprendre la séance à clôture de TMUX

Pour en savoir plus sur TMUX et comment l'utiliser, suivez simplement le lien: utilisez le multiplexeur TMUX Terminal pour gérer plusieurs terminaux Linux.

3. Utilisation de la commande noHup pour continuer à exécuter des séances SSH

Si vous n'êtes pas si familier avec filtrer ou tmux, vous pouvez utiliser nohup Et envoyez votre commande longue course en arrière-plan afin que vous puissiez continuer pendant que la commande continue de s'exécuter en arrière-plan. Après cela, vous pouvez vous déconnecter en toute sécurité.

Avec la commande noHup, nous disons au processus d'ignorer le Faire un coup de pouce Signal qui est envoyé par la session SSH à la fin, faisant ainsi persister la commande même après la déconnexion de la session. Lors de la déconnexion de la session, la commande est détournée du terminal de contrôle et continue de fonctionner en arrière-plan en tant que processus de démon.

Exécution de la commande à l'aide de nohup en arrière-plan

Voici un scénario simple dans lequel nous avons exécuté la commande find pour rechercher des fichiers en arrière-plan sur la session SSH à l'aide de NoHup, après quoi la tâche a été envoyée à l'arrière Piquer et Job IDENTIFIANT du processus ([Jobid] pid).

# noHup Find / -Type f $ gt; files_in_system.OUT 2> 1 & 
Exécuter la commande Linux en arrière-plan
Reprendre la session pour voir si le travail est toujours en cours d'exécution

Lorsque vous relogin à nouveau, vous pouvez vérifier l'état de commande, ramenez-le au premier plan en utilisant 'fg% jobid' pour surveiller ses progrès et ainsi de suite. Ci-dessous, la sortie montre que le travail a été terminé car il ne s'affiche pas sur Regin, et a donné la sortie qui est affichée.

# fg% jobid 
Exécuter la commande Linux en arrière-plan

4. Utilisation de la commande Diet pour faire fonctionner les sessions SSH

Un autre moyen élégant de laisser votre commande ou une seule tâche s'exécuter en arrière-plan et de rester en vie même après la déconnexion ou la déconnexion de la session est en utilisant renier.

Renier, Supprime le travail de la liste des travaux de processus du système, de sorte que le processus est protégé de la mort pendant la déconnexion de la session car elle ne recevra pas Faire un coup de pouce par le shell lorsque vous vous déconnectez.

L'inconvénient de cette méthode est qu'il ne doit être utilisé que pour les travaux qui n'ont pas besoin de contribution du stdin Et aucun besoin d'écrire stdout, Sauf si vous redirigez spécifiquement les travaux et les sorties, car le travail essaiera d'interagir avec stdin ou stdout, ça s'arrêtera.

Exécution de la commande en utilisant le renversant en arrière-plan

Ci-dessous, nous avons envoyé ping-ping Commande en arrière. Comme on le voit, le travail a été suspendu pour la première fois, après quoi il était encore dans la liste des travaux comme ID de processus: 15368.

$ ping tecmint.com> pingout & $ jobs -l $ diry -h% 1 $ ps -ef | ping grep 
Exécutez les commandes Linux en utilisant le renoncement

Après ce signal de renoncement, a été transmis au travail, et il a été supprimé de la liste des travaux, mais il était toujours en cours d'exécution en arrière-plan. Le travail serait toujours en cours d'exécution lorsque vous reconstituez le serveur distant comme le montre ci-dessous.

$ ps -ef | ping grep 
Vérifiez l'état du travail

5. Utilisation de la commande setsid pour mettre en marche les sessions SSH

Un autre utilitaire pour réaliser le comportement requis est setsid. Nohup a un inconvénient dans le sens où le groupe de processus du processus reste le même, de sorte que le processus en cours d'exécution avec noHup est vulnérable à tout signal envoyé à l'ensemble du groupe de processus (comme Ctrl + c).

setsid D'autre part alloue un nouveau groupe de processus au processus exécuté et, par conséquent, le processus créé est totalement dans un groupe de processus nouvellement alloué et peut exécuter en toute sécurité sans crainte d'être tué même après la déconnexion de la session.

Exécuter n'importe quelle commande à l'aide de setID

Ici, cela montre que le processus 'Sleep 10m' a été détaché du terminal de contrôle, depuis le moment où il a été créé.

$ setsid sleep 10m $ ps -ef | sommeil grep 
Exécuter la commande Linux à l'aide de setID

Maintenant, lorsque vous réexpliqueriez la session, vous trouverez toujours ce processus en cours d'exécution.

$ ps -ef | grep [s] lee 
Fond de processus Linux Exécution

Conclusion

Quelles façons de penser à maintenir votre processus en cours d'exécution même après votre déconnexion à partir de la session SSH? S'il existe un autre moyen efficace et efficace, mentionnez-vous dans vos commentaires.