質問: sshx11転送の問題 forwardx11を~/.ssh/configに入れてから、次のようなx11アプリケーションを起動します。ssh -f user@host 'someapp; sleep 1' これは正常に機能します。アプリケーションsomeappには、シェルスクリプトviewer.shを介してビューアアプリケーションを開くボタンがあります。ボタンを押すとビューアが表示されます。これはすべて良好で、予想どおりですが、ssh -2 -f user@host 'someapp; sleep 1' トラブルがあります。 someappは非常にうまく起動しますが、ボタンをクリックしてもビューアが表示されません。ビューアがシェルスクリプトを介して呼び出されるので、呼び出しをxclockに置き換えましたが、状況はまったく同じでした。ビューアのせいではないと思います。 linuxとaixでも状況は同じです。-2が必要な理由は、最終的に接続多重化を使用したいためです。これはバージョン2でのみ機能します。sleep 1の理由は、それ以外では機能しなかったためです;-)さらに混乱を加えるには、ssh -2 -f user@host 'xterm &; app; sleep 1' xtermが開いている限り、ビューアは機能します。 xtermを閉じると、ssh -vは次のように出力しますdebug1: channel 1: force input drain debug1: channel 0: free: client-session, nchannels 3 debug1: channel 1: free: x11, nchannels 2 その瞬間から、ボタンを押してもビューアは表示されません。また、ビューアアプリケーションを、$display変数をファイルに書き込むスクリプトに置き換えました。変数は常に正しく設定されています。
回答: 開始するssh接続は、次の場合にのみ稼働し続けます。 指定したコマンドが実行されています。 アクティブなx11接続があります。 あなたの場合、「someapp; sleep 1」を指定すると、「someapp」が終了した後、接続が終了する前に、新しいx11接続を確立する必要がある1秒の時間枠があることを意味します。someappがバックグラウンドで別のアプリケーションを開始した場合、sshはそれ自体でいつ終了するかを知ることができません。これは、後でxディスプレイに接続するだけです。したがって、その情報を提供するために何かを検討する必要があります。ランチャーによって生成されたプログラムが終了するまで終了しないラッパースクリプトのように。または、「1日寝る」と言って幸せになりましょう。