usr/bin/xterm Xtエラー:ディスプレイを開けませんでした:/usr/bin/xterm:ディスプレイが設定されていませんか?

usr/bin/xterm Xtエラー:ディスプレイを開けませんでした:/usr/bin/xterm:ディスプレイが設定されていませんか?

以下を介して学校サーバー(HPC)にジョブを送信しようとします。

#!/bin/bash

#$ -S /bin/bash
#$ -cwd
#$ -o ./out_$JOB_ID.txt
#$ -e ./err_$JOB_ID.txt
#$ -notify

#$ -pe orte 1

date
pwd

##################################
RESULT_DIR=~/Results
SCRIPT_FILE=sample_job
##################################

. /etc/profile
. /etc/bashrc

module load packages/comsol/4.4
module load packages/matlab/r2012b

comsol server matlab "sample_job, exit" -nodesktop -mlnosplash

/bin/uname -a

mkdir $RESULT_DIR/$name
cp *.csv $RESULT_DIR/$name

ジョブの中断は次のように言います。

Sun Jun  8 14:20:21 EDT 2014
COMSOL 4.4 (Build: 150) started listening on port 2036
Use the console command 'close' to exit the program
/usr/bin/xterm Xt error: Can't open display: 
/usr/bin/xterm:  DISPLAY is not set
Program_did_not_exit_normally
Exception:
    com.comsol.util.exceptions.FlException: Program did not exit normally
Messages:
    Program did not exit normally

Stack trace:
    at com.comsol.mli.application.a.a(Unknown Source)
    at com.comsol.mli.application.MatlabApplication.doStart(Unknown Source)
    at com.comsol.util.application.ComsolApplication.doStart(Unknown Source)
    at com.comsol.util.application.ComsolApplication.doRun(Unknown Source)
    at com.comsol.bridge.Bridge$2.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

ERROR: Could not start COMSOL Application. See log file: /home/.comsol/v44/logs/server2.log
java.lang.IllegalStateException: Shutdown in progress
    at java.lang.ApplicationShutdownHooks.add(Unknown Source)
    at java.lang.Runtime.addShutdownHook(Unknown Source)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:699)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:451)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.comsol.util.application.ServerApplication.a(Unknown Source)
    at com.comsol.util.application.ServerApplication.a(Unknown Source)
    at com.comsol.util.application.ServerApplication.a(Unknown Source)
    at com.comsol.util.application.ServerApplication.main(Unknown Source)

原因は何で、どうすれば解決できますか?

ベストアンサー1

このスクリプトを実行するために送信するときに、GridEngineをクラスタソフトウェアとして使用しているとします。このような:

$ qsub myscript.sh

qsub次のように、HPCクラスタノードで作成したい結果シェルに環境変数を含めることができます。

$ qsub -v DISPLAY=$(hostname):0.0 myscript.sh

これにより、リモートでGUIを表示したいシステムのホスト名を「注入」する必要があります。

ローカルシステムがリモートで表示されたウィンドウを「受信」できるようにするには、これを行う必要があります。最も簡単でセキュリティレベルが低い方法は次のとおりです。

$ xhost +

これがうまくいき、それを「より安全に」することに興味がある場合は、より明示的に説明できますが、xhost +これは必ずしも必要ではありません。あなたの考えを教えてください、必要に応じてさらに調整することができます。

上記の方法で動作しない場合はどうなりますか?

最新バージョンには、次のように環境変数を正しく渡すスイッチがqsub含まれています。-X$DISPLAY

$ qsub -X myscript.sh

ホスト名の代わりに送信ホストのIPアドレスを試すこともできます。 HPC ノードに DNS が正しく設定されていない可能性があります。

$ qsub -v DISPLAY="$(hostname -i):0.0" myscript.sh

引用する

おすすめ記事