Comment continuer à exécuter le programme après la déconnexion SSH? [dupliquer]

15

Doublons possibles:
garder un programme en cours d'exécution après la fermeture d'une console, après le démarrage du programme
Comment puis-je utiliser ssh pour exécuter une commande sur une machine Unix distante et quitter avant la fin de la commande?

Salut!

Je veux exécuter le programme de mon ordinateur portable par connexion SSH au serveur distant. Le problème est que je rentre chez moi avec mon cahier :)

Comment continuer à exécuter le programme?

Max
la source

Réponses:

22

'écran' est probablement ce que vous voulez. Il vous permet de vous déconnecter et de vous reconnecter à volonté. Après vous être connecté au serveur, exécutez screen avant de démarrer votre programme. Ctrl-a, Ctrl-d vous déconnectera (le programme continue malgré tout). À votre retour, 'screen -r' vous reconnectera comme si vous n'aviez jamais été absent.

Considérez-le comme VNC ou RDP pour les terminaux texte. Recherchez «utilisation de l'écran» pour de nombreux didacticiels.

Modifié pour ajouter: Ces jours-ci, je recommanderais plutôt tmux , surtout s'il est utilisé en conjonction avec le script tmx . La possibilité de diviser les volets (verticalement et horizontalement) et de les redimensionner est un énorme avantage sur l'écran.

Chris
la source
5
Soit dit en passant, l'écran continuera de fonctionner si votre connexion expire ou quelque chose comme ça pendant que vous y êtes toujours connecté. Quelques commandes utiles: ctrl + a, ctrl + d = détacher de l'écran, écran -r = rattacher à un écran, écran -x = attacher à un écran en mode partagé (peut être utilisé pour l'enseignement, etc., deux utilisateurs peuvent partager le même écran), ctrl + a, esc = entrer en mode défilement (appuyez sur q pour quitter à nouveau). REMARQUE: Si vous démarrez un écran en tapant "programme d'écran", il lancera immédiatement le programme à l'écran, mais s'il se ferme, vous perdrez le tampon. Taper simplement "écran" vous donnera un terminal persistant.
Chris, également tnx pour une réponse utile.
18

nohup est une commande qui exécutera une autre commande et la rendra immunisée contre le signal de "raccrochage".

Vous l'exécutez aussi simplement que:

nohup command

mais vous devrez également rediriger stdin, stdout et stderr. Voir la page de manuel pour plus d'informations.

Vous voudrez probablement aussi le mettre en arrière-plan.

Vous devrez également connaître la killcommande pour éventuellement le tuer.

Pensée étrange
la source
Oui, tnx beaucoup! si facile))
C'est celui que j'utilise. Très très simple. Utilisez teepour rediriger stdin, stdout et stderr.
Ritwik Bose