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

인용하다

관련 정보