Arrêter le PC sans tuer les sessions SSH

14

J'ai des processus lourds et longs exécutés sur des machines Linux distantes. J'utilise mon ordinateur portable pour SSH sur ces machines et exécute les processus depuis mon canapé.

MAIS, lorsque je veux arrêter mon ordinateur portable, je suis en difficulté car les processus distants sont tués.

J'ai fait mes recherches et j'ai découvert que "l'écran" est une excellente solution pour moi, ça l'est! (Tant que je n'arrête pas mon ordinateur portable). N'y a-t-il pas un moyen de "conserver" les sessions "écran" pour que je puisse les fermer puis les rattacher à une session?

Sathyajith Bhat
la source
Utilisez-vous l'écran sur les systèmes Linux distants?
Sam Miller
est-il possible d'arrière-plan des processus?
ennuikiller

Réponses:

32

Il semble que vous exécutiez la session d'écran sur votre ordinateur portable. Passer ensuite de cette session d'écran aux hôtes distants. L'arrêt de l'ordinateur portable va tuer le processus d'écran local, qui tue à son tour la session ssh.

Ce que vous voulez faire, c'est passer de votre ordinateur portable aux hôtes distants. Ensuite, démarrez une session d'écran sur l'hôte distant. Lorsque votre ordinateur portable est éteint, la session ssh mourra, mais la session d'écran à distance persistera.

La prochaine fois que vous vous connecterez au système distant, vous pourrez vous reconnecter à la session d'écran avec "screen -r" ou si vous avez plusieurs sessions d'écran "screen -r <pid>".

Remarque: si vous avez oublié de vous détacher de la session d'écran distante avant que ssh ne soit tué, la session d'écran peut penser qu'elle est toujours attachée. Dans ce cas, vous devrez faire "screen -dr <pid>" pour détacher la session en premier.

erichui
la source
4
Soit dit en passant, si je me souviens bien, appuyez sur Ctrl+Asuivi de Dlorsque vous êtes en screendétacher la session d'écran.
David Z
@David c'est correct, vous pouvez aussi simplement fermer votre terminal ou session ssh et l'écran restera ouvert. "screen -raAd" se rattachera.
Chris
Comment démarrer une session d'écran sur l'hôte distant?
stupidité
15

Vous pouvez utiliser nohuppour démarrer un processus qui doit continuer à s'exécuter après votre déconnexion d'une machine. C'est peut-être ce que vous recherchez.

John Smith
la source
Pour un processus déjà en cours, vous pouvez faire ^ Z puis disowncréer ce que je crois être un effet équivalent. disownest un bashisme qui peut ou non être disponible sur d'autres coques.
intuition
+1 pour nohup. Le problème, ^Zc'est qu'il interrompt le processus. Il n'y a aucun moyen d'arrière-plan d'un processus mais de le faire fonctionner sans hoquet.
detly
6

Si vous détachez la session à distance screen, vous pouvez arrêter votre ordinateur portable en toute sécurité.

chryss
la source
Je ne sais pas s'il est universellement évident que la session d'écran à détacher doit se trouver sur le serveur distant.
intuition
6

Le point d'écran est de l'exécuter sur le serveur et de le détacher avec CTRL+ A+ D.

Peter Mortensen
la source
2

Utilisez nohup. Un autre choix pour utiliser VNC. Créez une session VNC sur le serveur. Connectez-vous ensuite à chaque fois que vous travaillez. (Plus utile lorsque le long processus utilise une interface graphique - un IDE par exemple)

Jayan
la source
0

Si ces serveurs ont un KVM à distance ILO / DRAC / Other, etc., vous pourrez peut-être vous connecter à la console et y interagir. Étant donné que les sessions lancées sont essentiellement locales, la suppression de la connexion de votre ordinateur portable ne fera rien.

DHayes
la source