Запуск приложений с графическим интерфейсом (DISPLAY) на терминале Jupyter для ноутбуков - Linux - PullRequest
0 голосов
/ 08 мая 2019

Мы работаем с ноутбуком jupyter на сервере Ubuntu и используем терминальную функцию jupyter.Это хорошо для запуска CLI, но когда нам нужно запустить приложение с графическим интерфейсом (например, xclock), тогда появляется сообщение Can't Open Display.

Если мы запустим ту же самую команду GUI, взяв сеанс pytty из windows jumpserver и установив переменную DISPLAY, то она будет работать нормально (т. Е. Приложение с графическим интерфейсом отображается правильно)

(base) sandeep:/data$ xclock
Error: Can't open display:

В идеале этодолжен работать, если мы установили правильную переменную окружения DISPLAY.Однако, какое должно быть правильное значение DISPLAY в случае терминала ноутбука Jupyter, может кто-нибудь предложить, пожалуйста.

1 Ответ

0 голосов
/ 22 мая 2019

Сценарий. На локальном компьютере вы хотите открыть и управлять блокнотом Juniper, работающим на удаленном компьютере. Мы сделаем это, открыв туннель SSH. Этот туннель перенаправляет порт, используемый удаленно работающим экземпляром Jupyter, на порт на локальной машине, где к нему можно получить доступ в браузере, точно так же, как локально работающий экземпляр Jupyter.

На удаленном компьютере запустите сервер ноутбуков Jupyter:

remote_user@remote_host$ Jupyter notebook --no-browser --port=8889

Обычно Jupyter открывает браузер для отображения доступных ноутбуков, но нам это не нужно, поэтому мы используем опцию --no-browser. Мы также изменим порт на 8889, только для того, чтобы показать, как это делается.

На локальном компьютере запустите туннель SSH:

local_user@local_host$ ssh -N -f -L localhost:8888:localhost:8889 remote_user@remote_host

Первая опция -N сообщает SSH, что удаленные команды не будут выполняться, и полезна для переадресации портов. Второй параметр -f приводит к тому, что SSH переходит в фоновый режим, поэтому локальный терминал, поддерживающий туннель, остается пригодным для использования. Последняя опция -L отображает конфигурацию переадресации портов (с удаленного порта 8889 на локальный порт 8888).

Теперь откройте браузер на локальном компьютере и введите в адресную строку

localhost:8888

, который отображает ваш удаленно работающий сервер ноутбука Jupyter.

Чтобы закрыть туннель SSH на локальном компьютере, найдите процесс и уничтожьте его вручную:

local_user@local_host$ ps aux | grep localhost:8889
local_user 18418  0.0  0.0  41488   684 ?        Ss   17:27   0:00 ssh -N -f -L localhost:8888:localhost:8889 remote_user@remote_host
local_user 18424  0.0  0.0  11572   932 pts/6    S+   17:27   0:00 grep localhost:8889
local_user@local_host$ kill -15 18418

Кроме того, вы можете запустить туннель без опции -f. Затем процесс останется на переднем плане и может быть убит с помощью ctrl-c.

На удаленной машине убейте сервер Jupyter с помощью ctrl-c ctrl-c.

...