
SSH 経由でリモート サーバーで Python スクリプトを実行していますが、最後に pyplot を使用してグラフを保存する必要があり、そのためには X サーバーがアクティブである必要があります。これは長時間実行されるため、"screen" コマンドを使用して、そのままにして、戻ってきたときに再開しています。これの問題は、再開された画面が、最初に接続したときに SSH が使用していた X ディスプレイ (例: localhost:15.0) に出力しようとすることです。ただし、戻るまでにローカル マシンまたはサーバーが別のディスプレイ (例: localhost:22.0) を割り当てていることがよくあるため、出力先が見つからないためコードが壊れます。
このタイムアウトを停止したり、SSH セッション内から使用するディスプレイを設定したりする方法はありますか? -X と -Y を使用して接続してみましたが、変化はありませんか?
ありがとう!
答え1
まず、X フレームバッファを必要としない matplotlib などの他のプロット ライブラリを使用する方がよいでしょう。
どうしても pyplot を使用する必要がある場合は、リモート側で Xvfb (仮想 X サーバー) を起動し、$DISPLAY 変数を転送された X ディスプレイではなくそれにポイントしてください。そうすれば、問題なく画面内で実行されます。