Exécuter une commande dans un shell et continuer à l'exécuter lorsque vous fermez la session

StackOverflow https://stackoverflow.com/questions/431521

  •  08-07-2019
  •  | 
  •  

Question

J'utilise Putty pour me connecter à un serveur distant. Ce que je veux savoir, c'est s'il existe un moyen d'écrire mes commandes et de leur permettre de continuer à fonctionner après la fermeture de la session avec Putty. La raison en est que je ne veux pas garder l'ordinateur allumé tout le temps. Y a-t-il un moyen de le faire?.

Mettre à jour avec la solution

Pour ma question, telle qu'elle est présentée, la meilleure solution consiste à utiliser l'une des commandes fournies, telle que nohup , car vous ne devez installer aucun logiciel supplémentaire. Mais si vous êtes dans le même écran d'utilisation, installez-le et utilisez-le. C'est incroyable.

J'ai choisi comme favori la réponse de Norman Ramsey car je propose plusieurs solutions à l'aide de commandes et de écran . Mais s'il vous plaît vérifier les autres réponses spécialement celle de PEZ, alors vous obtenez un aperçu de ce que l'écran peut faire.

Était-ce utile?

La solution

nohup , désavoué et écran sont tous bons, mais écran est le meilleur, car contrairement aux deux autres , screen vous permet de vous déconnecter du serveur distant, de tout laisser fonctionner, puis de vous reconnecter ultérieurement pour voir ce qui se passe. Avec nohup et désavoué , vous ne pouvez pas reprendre l'interaction.

Autres conseils

Écran! C'est la meilleure chose depuis le pain en tranches. (Oui, je sais que d’autres l’ont déjà suggéré, mais c’est tellement bien que le monde entier devrait s’associer à lui et le suggérer également.)

L’écran est, par exemple, ummmm ... comme utiliser VNC ou similaire pour se connecter à un GUI destop, mais pour les fenêtres du shell de commandes. Vous pouvez avoir plusieurs shell " windows " ouvrir immédiatement dans la même session d'écran. Vous pouvez faire des choses comme:

  1. Démarrez une session d'écrans en utilisant " screen -dR " (s'habituer à utiliser -dR)
    • exécuter des commandes dans une fenêtre
    • appuyez sur CTRL - A , C pour créer une nouvelle fenêtre et ouvrir un fichier dans vim
    • appuyez sur CTRL - A , 0 pour revenir à la première fenêtre et lancer une commande sur le fichier que vous venez de modifier
    • CTRL - A , 1 pour revenir à votre session vim
    • CTRL - A , C pour une autre fenêtre et peut-être faire "sudo - su". (parce que vous avez simplement besoin d’un shell root complet)
    • CTRL - A , 0 et démarrez un processus en arrière-plan
    • CTRL - A , C pour créer une nouvelle fenêtre, " tail -f " le journal de ce processus en arrière-plan
    • CTRL - A , d pour déconnecter votre écran, puis CTRL - D se déconnecter du serveur
    • Partez en vacances pendant trois semaines
    • Reconnectez-vous au serveur et émettez le message " screen -dR " se connecter à votre session d'écran existante
    • consultez le journal de la quatrième fenêtre avec CTRL - A , 3 (c'est comme si vous y étiez tout le temps temps)
    • CTRL - A , 1 pour reprendre la session vim à nouveau
    • Je suppose que vous commencez à avoir la photo maintenant? =)

C'est comme par magie. Je me sers de l'écran depuis plus longtemps que je ne m'en souviendrai et je suis toujours étonné de voir à quel point il est génial.

MODIFIER : je tiens simplement à mentionner qu'il existe désormais aussi un tmux . Cela ressemble beaucoup à écran , mais présente certaines caractéristiques uniques, notamment le fractionnement des fenêtres.

Essayez d’utiliser l’écran GNU . Cela vous permet d'avoir plusieurs coquilles ouvertes à la fois. Et vous pouvez vous déconnecter de ces shells en cours d’exécution (c’est-à-dire fermer la session avec Putty) et ils continueront à faire leur travail.

Ce que vous recherchez, c'est nohup .

Voir le lien wiki pour savoir comment l'utiliser.

L’écran est le meilleur.

Essayez:

screen -dmS " MyTail " tail -f / var / log / syslog

Cette commande de démarrage en arrière-plan.

Utilisez screen -r pour lister et ou screen -r Mytail pour entrer en session.

Si plusieurs utilisateurs ont besoin d'accéder à la même session, utilisez: screen -rx MyTail, et les deux utilisateurs ou plus partagent la session.

Si vous ne pouvez pas utiliser screen (parce que, par exemple, votre session SSH est pilotée par programme), vous pouvez également utiliser démonisez pour exécuter le programme en tant que démon.

Une des solutions qui me convient le mieux est sur .

sur fonctionne comme cron, mais pour un travail ponctuel. Je l'ai utilisé aujourd'hui pour télécharger un fichier volumineux sans avoir à garder ma session active.

par exemple:

$ at 23:55
at> wget http://file.to.download.com/bigfile.iso
at> ^D  

Vous passez à une heure (dans le futur) et cela vous donnera une invite. Vous entrez les commandes que vous souhaitez exécuter à ce moment-là et appuyez sur ctrl + d. Vous pouvez quitter votre session et les commandes seront exécutées à l'heure spécifiée.

Wikipedia contient plus d'informations sur sur .

./command & disown
ssh localhost && ./command && exit
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top