Я запускаю скрипт bash, который, помимо прочего, запускает Java-программу, которую можно использовать через графический интерфейс или через командную строку (в зависимости от параметра).
splitstree --commandLineMode --commandFile comm.txt --version --verbose
РЕДАКТИРОВАТЬ:
Когда я запускаю его через обычную командную строку или через графический интерфейс, он работает отлично.Если я echo
эту команду в файл и $(cat file)
, она также работает, и она работает также, когда я интегрирую ее в скрипт bash и запускаю скрипт bash.
Если я qsub
отправлю его в кластер, где я выполняю работу, я получаю сообщение об ошибке отсутствующего дисплея:
java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed
an operation which requires it.
Я попытался export DISPLAY=:0.0
в скрипте bashно ошибка не изменилась.
РЕДАКТИРОВАТЬ 2:
Если я передам переменную DISPLAY команде qsub
, ошибка исчезнет, но программа завершит работу с состоянием выхода 1. Подобно:
qsub -v DISPLAY <job_file>
В нем также указано Picked up _JAVA_OPTIONS: -Xmx4096M
, но выполнение unset
для этой переменной не изменило состояние выхода (так что, вероятно, не вредит процессу).
Повторное выполнениета же команда за пределами qsub
(то есть просто скопируйте и вставьте cmd в оболочку) снова работает отлично.
Есть ли какие-либо предложения о том, как сделать так, чтобы команда qsub
правильно передавала информацию отображения узлу кластера?