Je travaille sur une machine distante CentOS 5.6 et mon réseau ne cesse de chuter. Existe-t-il un moyen de récupérer mes sessions bloquées après ma reconnexion?
EDIT: je fais des mises à jour et des installations avec yum et crains que cela ne soit un problème si les processus restent au centre de leurs activités.
linux
session
shell
networking
Jeff Schaller
la source
la source
Réponses:
Il n'y a aucun moyen, mais pour éviter cela, j'aime utiliser
tmux
. Je lance tmux, lance l'opération et continue mon chemin. Si je reviens et trouve que la connexion a été rompue, tout ce que j'ai à faire est de vous reconnecter et de tapertmux attach
.Voici un exemple.
la source
screen
.Les recommandations pour tmux et screen sont toutes deux de bonnes suggestions. Ils impliquent la réponse à votre question, mais ne le déclarez pas réellement. La réponse à la question est: il n'y a aucun moyen. Si vous vous connectez via ssh, le shell est terminé lorsque la connexion est interrompue. La solution consiste à vous connecter et à démarrer immédiatement un terminal virtuel (tel que
tmux
). Lorsque la connexion est interrompue, le shell dans lequel vous vous trouvez est terminé, mais vous pouvez en ouvrir un nouveau et vous reconnecter au terminal virtuel (qui exécute le shell dans lequel vous effectuez réellement votre travail.)la source
Comme William l'a dit, la réponse courte est non, il n'y a aucun moyen. Pour éviter cela, vous pouvez utiliser la commande screen avant de perdre la connexion.
la source
Non, vous ne pouvez pas récupérer un shell après une déconnexion. Au lieu de cela, vous pouvez vous assurer que la commande que vous avez exécutée continue de s'exécuter après la déconnexion.
Pour ce faire, utilisez les commandes "nohup" et "désaveu", qui sont généralement des commandes intégrées à la plupart des shells, c’est-à-dire que vous n’aurez rien à installer. Cela ne fonctionne cependant que pour les commandes non interactives.
Ainsi, les étapes seraient les suivantes:
Lorsque vous revenez sur le serveur, cliquez simplement sur "tail nohup.out" pour voir comment se comporte la commande.
la source
Quelqu'un a ajouté reptyr dans un commentaire plutôt que dans une réponse, je ne peux donc pas y revenir, mais cela semble être une bonne réponse à la question modifiée et a très bien fonctionné sous CentOS.
voir: https://github.com/nelhage/reptyr https://www.ostechnix.com/reptyr-move-running-process-new-terminal/
Donc même chose, j'ai perdu la connexion à distance à une session de mise à jour yum. Alors j'ai cherché et trouvé cette question ... puis reconnecté et utilisé l'écran cette fois:
et me voilà à l’invite retrouvée que miam donnait quelques heures plus tôt.
Techniquement, toutes les réponses sont correctes, il ne s’agit PAS d’une récupération d’une session bloquée, c’est de la reconstitution d’un processus orphelin de la session en cours. Et très utile c'est aussi ...
la source
Comme beaucoup de gens ont suggéré
screen
ettmux
, ils fonctionnalités de base à la fois de support, mais ont des caractéristiques spécifiques de distinctes, donc on ne peut pas dire que l' un est supérieur à l' autre dans tous les cas. Par exemple, seul tmux prend en charge le fractionnement de la fenêtre , alors que seul l’écran GNU peut basculer le retour à la ligne long avec (Ctrl + ar). Voir comparaison plus détaillée ici .Il existe également des outils spécifiques pour résoudre ce problème de ssh:
Autossh est un programme permettant de démarrer une copie de ssh et de la surveiller, en la redémarrant si nécessaire au cas où celle-ci mourrait ou cesserait de passer du trafic. L'idée est de rstunnel.
Mosh est une application de terminal à distance qui permet l'itinérance, prend en charge la connectivité intermittente et fournit une modification intelligente de l'écho local et de la ligne des touches des utilisateurs. Mosh remplace SSH. Il est plus robuste et réactif, en particulier via les liaisons Wi-Fi, cellulaires et longue distance.
la source
Cela peut être fait en utilisant
tmux
shell. Si vous êtes déconnecté, le moyen le plus rapide de rattacher une session est:la source
tmux
session en cours d'exécution.attach
commea
».