C'est une question qui a été abordée plusieurs fois, non seulement ici, mais aussi dans d'autres sites du réseau d'échange de pile (par exemple, comment faire ssh pour tuer le processus distant lorsque j'interromps ssh lui-même? ). Cependant, je ne peux faire fonctionner aucune des solutions pour moi.
J'exécute une commande via ssh. Chaque fois que je quitte ssh, je veux que la commande meure également. Cette commande est un démon appelé ktserver qui s'exécute indéfiniment jusqu'à ce que vous appuyiez sur Ctrl-C.
Je l'exécute comme suit: ssh -t compute-0-1 ktserver
et, en effet, lorsque j'appuie sur Ctrl-C, le processus se termine avec élégance et la session ssh se termine.
Cependant, si au lieu d'appuyer sur Ctrl-C, je tue le processus ssh à l'aide de la kill
commande (par exemple, l'envoi de SIGINT ou SIGHUP), le ktserver
processus reste vivant.
Comment puis-je rendre le ktserver
toujours indépendant sur la façon dont ssh
est tué?
EDIT : Si, au lieu de ktserver
lancer quelque chose de complètement différent, comme gedit
, tout fonctionne comme un charme (c'est-à-dire que gedit meurt lorsque la connexion s'éteint). Par conséquent, il peut y avoir un problème avec le processus lui-même. Par exemple, j'ai pensé qu'il pourrait ignorer SIGHUP ou SIGINT. Cependant, lorsque j'exécute kill -1 ktserver
ou kill -2 ktserver
, le processus se termine comme prévu.
EDIT2 : Comme le souligne Mark Plotnick, le problème est lié au fait qu'aucune communication ne circule sur le canal ssh. J'ai confirmé en exécutant ssh -t <host> read
et en tuant le processus ssh par la suite. read
était toujours en vie et donnait des coups de pied.
ssh example.com dd ...
travaux ont été exécutés jusqu'à la fin des heures, même après la ssh
connexion, en raison de problèmes de réseau. Si vous pouvez modifier ktserver
pour prendre une option pour sortir quelque chose de temps en temps, cela peut être une solution de contournement.
read
sur l'ordinateur distant, et après avoir tué la connexion ssh , je ne suis read
pas mort. Malheureusement, je ne peux pas changer ktserver pour afficher quoi que ce soit. Il n'y a donc pas de solution?
shopt -s huponexit
). Pouvez-vous tester si cela fonctionne pour vous?
kill -9 ktserver
?