usr / bin / xterm Erro Xt: Não é possível abrir a exibição: / usr / bin / xterm: DISPLAY não está configurado?

2

Estou tentando enviar um trabalho para um servidor da escola (HPC) com:

#!/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

O trabalho interrompe dizendo:

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)

Qual pode ser o motivo e como devo corrigi-lo?

    
por Sibbs Gambling 08.06.2014 / 20:33

1 resposta

2

Suponho que você esteja usando o GridEngine como software de armazenamento em cluster quando enviar este script para ser executado. Algo parecido com isto:

$ qsub myscript.sh

Você pode incluir variáveis de ambiente em qsub que você deseja que as shells resultantes sejam geradas nos nós do cluster HPC da seguinte forma:

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

Isso deve "injetar" o nome do host do sistema que você está enviando como o sistema para o qual você gostaria que qualquer GUI fosse mostrada remotamente.

Você também pode precisar fazer isso para permitir que o sistema local "receba" essa janela exibida remota. A maneira mais fácil e menos segura de fazer isso é assim:

$ xhost +

Se isso funcionar e você estiver preocupado em tornar isso "mais seguro", será mais explícito com xhost + , mas provavelmente não será necessário. Deixe-nos saber como você se sai e podemos ajustar isso ainda mais, se necessário.

E se o acima não funcionar?

As versões mais recentes de qsub incluem agora um comutador, -X , que pretende passar a variável de ambiente, $DISPLAY ao longo da forma correta da seguinte forma:

$ qsub -X myscript.sh

Você também pode tentar usar o endereço IP do host de envio em vez do nome do host. Pode ser o caso de os nós HPC não terem a configuração de DNS adequada.

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

Referências

por 08.06.2014 / 21:31