gpt4 book ai didi

java - 如何将显示传递给 qsub 命令?

转载 作者:行者123 更新时间:2023-11-29 04:14:58 25 4
gpt4 key购买 nike

我正在运行一个 bash 脚本,除其他外,它还运行一个可以通过 GUI 或命令行(取决于参数)使用的 java 程序。

splitstree --commandLineMode --commandFile comm.txt --version --verbose

编辑:

当我通过普通命令行或 GUI 运行它时,它运行良好。如果我 echo 将此命令放入文件中,并且 $(cat file) 它也可以工作,并且当我将它集成到 bash 脚本中并运行 bash 脚本时它也可以工作.

如果我qsub它到我正在工作的集群,我会得到一个关于缺少显示的错误:

java.awt.HeadlessException: 
No X11 DISPLAY variable was set, but this program performed
an operation which requires it.

我尝试在 bash 脚本中 export DISPLAY=:0.0 但错误没有改变。

编辑 2:

如果我将 DISPLAY 变量传递给 qsub 命令,错误消失但程序终止,退出状态为 1。如:

qsub -v DISPLAY <job_file>

它还说 Picked up _JAVA_OPTIONS: -Xmx4096M 但对该变量执行 unset 并没有改变退出状态(所以可能不会损害进程)。

qsub 之外重新运行相同的命令(即:简单地将 cmd 复制粘贴到 shell 中)再次完美运行。

关于如何使 qsub 命令正确地将显示信息传递给集群节点的任何建议?

最佳答案

如果您不需要显示,请使用 -Djava.awt.headless=true 属性运行 Java,如 Using Headless Mode in the Java SE Platform 中所述。 .

或者,如果您的程序无法 headless 运行,您可以尝试使用 Xvfb (X virtual framebuffer) .它带有 xvfb-run 命令,看一下 Running without a Display维基:

xvfb-run java MainClass

或者通过配置DISPLAY环境变量:

sudo Xvfb :1 -screen 0 1024x768x24 </dev/null &
export DISPLAY=":1"
java MainClass

关于java - 如何将显示传递给 qsub 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52970109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com