X転送プログラムがある場合、SSHが終了後に終了しない


9

SSHを介してXプログラムを実行した後、SSHはシェルの終了後に終了しません(たとえばCtrlC、それを強制終了するために使用する必要があります)。

私の推測では、Xプログラムはすでに終了していますが、まだいくつかの「接続」が残っています(解放されていません)。私が今発見した例外があるgtk-demoacroread

誰かがその理由を知っていますか?これはssh {、d}構成の問題ですか?


1
これを自分でテストできます。-vを指定してsshを実行すると、オープンおよびクローズされたX11接続が報告されます。
カイルジョーンズ

@KyleJones THX、これが問題であるようです(2つの「接続」C-cが押された後に解放されます)。
yuyichao

どのX11ウィンドウでも、SLES11で同じ問題が発生しました。どのようにしてdbusまでたどり着きましたか?
Nils

実行中のプロセスを確認するだけです(他にアクティブなセッションがない場合)。私はsystemdを使用し、sshd(pam設定)でそれを有効にしたので、sshセッションのすべてのプロセスは同じcgroup内にあるため、確認が非常に簡単になります。~~
yuyichao

回答:


5

Xプログラムを起動すると、バックグラウンドプロセスが起動し、プログラムを閉じても終了しない(またはプログラム自体が正しく終了しない)と考えられます。何が起こるかについては、こちらをご覧ください。

これを修正するには、実行中のプロセスを見つけて、SSH経由でログインしたときにプロセスが開始されないようにするか、ログアウトする前にそれらを強制終了します。ログアウトしたら、SSH接続を強制終了することもできます。


K、問題はdbus(gconf)プロセスがまだ実行中であることです。(systemd-cgls~~に感謝)(killall -KILL以前にバックグラウンドプロセスをフォークする可能性があると考えてプログラム自体を試してみましたが、そうではないようです。)それで、物事をうまく行う方法はありますか?(例:dbus(gconf)を自動的に殺す)THX
yuyichao

1
あなたはにkillall dbusそのようなものを置くことができます.logoutが、それはおそらく他のものを台無しにするでしょう(つまり、あなたがローカルにログインしているとき)。
Lars Kotthoff、2012

うーん、手動でこれを行う必要があるようです(つまり、直接的なオプションはありません)。少なくとも私は既に使用してkill-session=1おり、うまくいけばsystemdがどのプロセスを
強制終了
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.