web-dev-qa-db-fra.com

Comment faire en sorte qu'un programme continue à s'exécuter après la déconnexion de SSH?

Duplicate possible:
Empêcher un processus en arrière-plan d'être arrêté après la fermeture du client SSH

J'ai un programme qui prend beaucoup de temps à terminer. Il s'exécute en tant que root sur ssh.
Je veux qu'il continue à fonctionner après ma déconnexion, est-ce possible et comment pourrais-je y parvenir?

156
omg

En supposant que vous ayez un programme exécuté au premier plan, appuyez sur ctrl-Z, puis:

[1]+  Stopped                 myprogram
$ disown -h %1
$ bg 1
[1]+ myprogram &
$ logout

S'il n'y a qu'un seul travail, vous n'avez pas besoin de spécifier le numéro du travail. Utilisez simplement disown -h et bg.

Explication des étapes ci-dessus:

Vous appuyez sur ctrl-Z. Le système suspend le programme en cours, affiche un numéro de travail et un message "Arrêté" et vous renvoie à une invite de bash.

Vous tapez la commande disown -h %1 (ici, j'ai utilisé un 1, mais vous utiliseriez le numéro de travail affiché dans le message Stopped qui marque le travail, de sorte qu'il ignore le travail. le signal SIGHUP (il ne sera pas arrêté en se déconnectant).

Ensuite, tapez la commande bg en utilisant le même numéro de travail. ceci reprend l'exécution du programme en arrière-plan et un message s'affiche pour le confirmer.

Vous pouvez maintenant vous déconnecter et il continuera à fonctionner.

324

Vous devriez essayer d'utiliser Nohup et de l'exécuter en arrière-plan:

Nohup sleep 3600 &
78
paxdiablo

Je voudrais essayer le programme écran .

40
Janusz

Commencez en arrière-plan:

./long_running_process options &

Et désavouez le travail avant de vous déconnecter:

disown
14
diciu
13
Matthew Flaschen

Vous pouvez utiliser screen , détacher et rattacher

3
brndnmg