J'ai parfois des processus longs à lancer avant de rentrer à la maison. Je crée donc une session SSH sur le serveur pour démarrer le processus, mais je souhaite ensuite fermer mon ordinateur portable et rentrer à la maison. Plus tard, après le dîner, je souhaite vérifier le processus que j'ai commencé avant de quitter le travail. Comment puis-je faire cela avec SSH? Je crois comprendre que si vous cassez votre connexion SSH, votre session de connexion sur le serveur sera également interrompue, ce qui mettra fin au processus de longue durée.
command-line
ssh
process
gnu-screen
λ Jonas Gorauskas
la source
la source
nohup
intercepte SIGHUP afin que le shell qui l'exécutait se ferme et envoie SIGHUP à tous ses enfants toujours en cours d'exécutionlong-running-process
ne meurt pas.disown
supprime simplement le travail spécifié de la liste des enfants de Bash afin qu'il ne tente pas d'envoyer du tout SIGHUP.nohup
est un programme distinct du shell, donc il fonctionne avec tous les shell, alors qu’ildisown
est un Bash builtin.nohup
accepte la commande à exécuter, alorsdisown
que fonctionne uniquement après que le travail a été démarré et que vous l'avez mis en arrière-plan afin que vous puissiez revenir au shell.tail -f nohup.out
pour vérifier ce qui se passe à votre retour.Vous voulez utiliser GNU Screen. C'est super génial!
CTRL+ a, dpour détacher de votre session écran
Lorsque vous revenez sur votre ordinateur portable:
Ensuite, vérifiez la progression de votre processus de longue durée!
screen
est un outil très complet, et peut faire beaucoup plus que ce que j'ai décrit. Pendant une session d’écran, essayez les touches ctrl + a ,? apprendre quelques commandes communes. Les plus communs sont probablement:screen -d -r
pour m'assurer que si un autre shell est attaché à ma session écran, il sera détaché avant que je ne le reprenne sur mon système actuel.la source
screen -S name
et laissez votre autre ami s'y connecter avecscreen -x name
.tmux
withtmuxinator
est une excellente combinaison pour les configurations sophistiquées, alors que je préfèrescreen
comme solution simple et rapide.Si vous n'avez pas planifié, paramétré
screen
, etc., procédez comme suit:Si votre processus s'exécute en arrière-plan: passez
Ctrl-Z
à l'étape 3, sinon: pour suspendre le processus de premier plan. Ceci indiquera le numéro de travail du processus suspendu, par exemple:Envoyez
processName
à l'arrière-plan avecbg %1
(en utilisant le type de travail qui suit le%
). Cela va reprendreprocessName
en arrière-plan.Disown
processName
avecdisown %1
oudisown PID
. Utilisez l'-h
indicateur si vous souhaitez conserver la propriété jusqu'à ce que vous terminiez votre shell actuel.la source
&
au début. Cela semble bien fonctionner!Ce que vous voulez utiliser est un écran ou mieux encore un wrapper convivial appelé byobu.
Screen vous permet d'exécuter plusieurs sessions de terminal virtuel dans la même session ssh. Un tutoriel et des pages d'aide sont disponibles.
Byobu est un wrapper qui permet d’ouvrir facilement de nouveaux écrans avec une simple touche de fonction au lieu d’une combinaison de touches ctrl-a. Il affiche également une ligne d'état avec tous les terminaux virtuels ouverts pouvant être nommés.
Une autre fonctionnalité intéressante est le fait que tout votre écran peut rester en place tant que votre connexion SSH est déconnectée. Vous venez juste de vous connecter à nouveau via ssh et d’appeler byobu et tout est comme avant.
Enfin quelques captures d' écran de Byobu.
la source
Il pourrait être intéressant de noter que
ssh -t lala screen -rxU moo
se joindra à la session moo sur l'hôte lalassh -t lala screen -S moo
créera la session moo sur l'hôte lalaet
ssh -t lala screen -S moo quux
créera la session moo sur l'hôte lala et exécutera le programme quux , en quittant la session une fois terminée.la source
Vieille question, étrange toujours, personne n’avait conseillé tmux , qui agit comme une enveloppe pour n consoles et les garde ouvertes jusqu’au besoin. Cela permet plus de contrôle, à côté d’un certain nombre de fonctions de tmux. C'est facile à gérer, il suffit d'exécuter tmux, ce qui vous amène dans son shell, lancez votre travail looong, puis appuyez sur ctrl + b suivi de d (detach) (
ctrl+b
est le "ok google" de tmux etd
la commande de fermeture sans sortie de la coque). Cela fonctionne réellement si vous fermez, par exemple, le mastic. Après le dîner, lorsque vous vous reconnectez, vous pouvez rouvrir tmuxtmux attach
pour voir votre écran exactement comme vous êtes parti. Quelque chose que j'aime divise le volet:ctrl+b
puis appuyez sur"
. Pour passer d’un volet à un autre,ctrl+b
puis appuyez sur la flèche haut / bas.la source
Vous pouvez trouver un bon guide ici: Gardez votre session SSH en marche lorsque vous vous déconnectez.
Vous pouvez maintenant démarrer une nouvelle session d’écran en tapant simplement écran sur la ligne de commande. Vous verrez des informations sur l'écran. Appuyez sur Entrée et vous serez à une invite normale.
Pour vous déconnecter (tout en laissant la session en cours) Appuyez sur Ctrl+ A, puis sur Ctrl+ Dimmédiatement. Vous verrez le message [détaché]
Pour vous reconnecter à une session déjà en cours
Pour vous reconnecter à une session existante ou en créer une nouvelle s'il n'en existe aucune
Pour créer une nouvelle fenêtre dans une session d’écran en cours d’exécution, appuyez sur Ctrl+ A, puis Cimmédiatement après. Vous verrez une nouvelle invite.
Pour passer d’une fenêtre d’écran à une autre Hit Ctrl+ Apuis Ctrl+ Aimmédiatement.
Pour lister les fenêtres ouvertes, appuyez sur Ctrl+ Apuis Wimmédiatement
la source
<kbd>Ctrl</kbd>
pour afficher les noms sous forme de touches du clavier.J'utilise NX NoMachine, qui est gratuit pour moi car ce n'est que moi. Essentiellement, il exécute une session X sur le serveur, à laquelle vous pouvez vous connecter et vous déconnecter à plusieurs reprises. La session X continue de fonctionner lorsque vous n'êtes pas connecté. Les connexions peuvent être faites de n'importe où. Vous pouvez choisir entre des fenêtres flottantes ou une seule fenêtre contenant un bureau complet (par exemple, un bureau complet de Gnome). Le client (que vous exécuteriez sur votre ordinateur portable) peut être exécuté sur Linux, MacOS, Solaris ou Microsoft Windows. Dans ce dernier cas, si vous choisissez les fenêtres flottantes, elles apparaissent individuellement dans la barre des tâches Windows.
J'utilise mon ordinateur portable Windows XP (dont j'ai besoin pour certains matériels spécifiques à Windows que je possède) comme interface frontale pour mes deux serveurs Linux utilisant NX Nomachine. Je peux même imprimer sur l'imprimante connectée à mon ordinateur portable Windows sous Linux.
la source