Garder un programme en cours d'exécution après la fermeture d'une console, après le démarrage du programme [dupliquer]


8

Duplicata possible:
Comment puis-je détacher un processus du Terminal, entièrement?

J'ai un programme exécuté dans une console Unix sur un ordinateur Unix distant. Je (stupidement) ne l'ai pas exécuté en utilisant nohup &, et maintenant je dois fermer la console locale.

Existe-t-il un moyen de le faire fonctionner à distance après la fermeture de la console locale?

Réponses:


12

Si votre coque est bash, vous pouvez les utiliser disown. Ctrl-Z pour suspendre le processus, puis disown -hpour qu'il ne reçoive pas SIGHUP.


Solution brillante. Cela a fonctionné :-)
Thrawn

3
Juste curieux: comme le processus est suspendu, cela ne devrait-il pas éventuellement être suivi bgou quelque chose comme ça? Ou le disown -hreprend-il aussi?
Arjan

Est-ce que cela fonctionnera si le processus est en cours d'exécution à l'intérieur screen? J'aimerais continuer à exécuter le processus dans mon habituel à la xtermplace.
voix

L'IIRC une fois renié, il ne sera connecté à aucun terminal
Douglas Leeder

5

Sous Solaris 9, vous pouvez utiliser nohup -p <pid>pour lancer un processus en cours. Voici une explication intéressante de l'implémentation. Je ne sais pas si cela a été implémenté sur d'autres Unices.


nohup: option invalide - p Ne fonctionne pas sur gentoo, ubuntu ou fedora (les unix sur lesquels j'ai essayé), mais merci quand même :-) Bon à savoir que Solaris l'a.
Thrawn

2

Ctrl-Z pour suspendre le processus, puis bgpour que le programme passe en arrière-plan et continue de fonctionner jusqu'à la fin.


Le problème est que si je ferme la console, les processus d'arrière-plan s'arrêteront également. J'ai besoin de quelque chose qui détache le processus de la console, comme le fait nohup, mais après le début du processus :-)
Thrawn

Et je ne pense pas que 'nohup bg &' fonctionnera non plus :-(
Thrawn

1
Je l'ai essayé sur l'un de mes systèmes et il fonctionnait bien lorsque je me suis déconnecté (utilisé uniquement du / >> tempcomme programme de test) mais je comprends être hésitant si vous ne voulez pas perdre le programme ou ses résultats.
Matrix Mole

2

Si vous pouvez vous permettre d'arrêter le programme et de le redémarrer avant de vous déconnecter, arrêtez-le et redémarrez-le via l' écran , ce qui est indispensable pour toute personne utilisant des connexions à distance vers des hôtes Unix.


1
Je pense que le principal problème ici est précisément qu'il aimerait ne pas arrêter le programme.
Gnoupi

1
Ouais, je voudrais que le programme ne soit pas arrêté :-)
Thrawn

Je suggérerais fortement un écran pour une utilisation future d'une telle situation (j'ai presque toujours une session d'écran fonctionnant sur n'importe quel système, j'ai un o sehll).
Matrix Mole

1
Plusieurs années plus tard, j'ai réalisé que j'étais un imbécile de ne pas utiliser l'écran :-)
Thrawn
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.