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?

Thrawn
la source

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.

Douglas Leeder
la source
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.

coneslayer
la source
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.

Matrix Mole
la source
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.

geek
la source
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