4
sshが終了したときにsshによって生成されたプロセスを強制終了する
これは、ここだけでなく、スタック交換ネットワークの他のサイトでも何度か取り上げられた質問です(たとえば、sshを中断したときにリモートプロセスを強制終了するためにsshを作成する方法は? )。しかし、私はどのソリューションも私のために機能させることはできません。 sshを介してコマンドを実行しています。sshを終了するたびに、コマンドも停止するようにします。このコマンドはktserverと呼ばれるデーモンであり、Ctrl-Cを押すまで無期限に実行されます。 次のように実行します。ssh -t compute-0-1 ktserver実際、Ctrl-Cを押すと、プロセスは正常に終了し、sshセッションが終了します。 ただし、Ctrl-Cを押す代わりに、killコマンドを使用して(たとえば、SIGINTまたはSIGHUPを送信して)sshプロセスを強制終了すると、ktserverプロセスは存続します。 どうすれば殺さktserverれる方法に依存せずに常に死ぬことができsshますか? 編集:のktserverような完全に異なる何かを実行する代わりにgedit、すべてが魅力のように機能する場合(つまり、geditが接続が切れたときに死ぬ)。したがって、プロセス自体に何か問題がある可能性があります。たとえば、SIGHUPまたはSIGINTを無視しているのではないかと考えました。ただし、kill -1 ktserverまたはを実行するkill -2 ktserverと、プロセスは期待どおりに終了します。 EDIT2:Mark Plotnickが指摘しているように、この問題は、sshチャネルで循環している通信がないという事実に関連しています。ssh -t <host> readその後、sshプロセスを実行して終了することで確認しました。readまだ生きていて蹴っていました。