3

У меня есть небольшая программа, которая проверяет некоторые элементы веб-службы. Программа показывает графический вывод и результаты командной строки.

Я пытался автоматизировать эту программу для периодического запуска на сервере в моем офисе. Проблема в том, что это работает только тогда, когда у меня включен X - либо непосредственно на сервере, либо через SSH -X .

После Google я попробовал Xvfb, который дал мне довольно загадочное сообщение об ошибке:

Xvfb :1 -screen 0 1600x1200x32

Fatal server error:
Server is already active for display 1
        If this server is no longer running, remove /tmp/.X1-lock
        and start again.

Есть идеи как его запустить? Я на самом деле ищу X-эквивалент &>/dev/null ...

4 ответа4

3

В Ubuntu echo $DISPLAY вероятно, дает :0.0 , сообщая вам, что ваш сеанс Ubuntu использует display 0. Это должно оставить любой другой номер для вас, чтобы использовать. Итак :1 должно было быть в порядке, разве что в предыдущем тесте все еще работает Xvfb ? (Или, как в сообщениях об ошибках: разве что какой-то временный файл /tmp/.X1-lock не был удален после некоторого более раннего теста.) Но: если вы не можете выяснить, что использует дисплей 1, то любое другое большее число должно подойти.

Быстрый тест в свежей Ubuntu 9.10:

# Install once, if required:
sudo apt-get install xvfb
sudo apt-get install imagemagick

# Run Xvfb in the background, on display 1
Xvfb :1 &

# Run xclock in the background, on display 1
DISPLAY=:1 xclock &

# Make a screen capture of the window with name Xclock
DISPLAY=:1 import -window Xclock current-time.png

# Stop xclock
kill `pidof xclock`

# Stop Xvfb
kill `pidof Xvfb`

Это должно создать файл current-time.png показывающий текущее время. Это работает для вас?

3

У меня была похожая проблема, и хотя ответ Алекса Мореги в порядке, мне больше понравился этот:

После установки xvfb вы можете решить это в одной строке: «xvfb-run <command>», где <command> - ваша программа.

Источник

1

Вы можете создать дисплей VNC. VNC предназначен для удаленного рабочего стола: на стороне сервера он создает виртуальный X-дисплей, который рендерится в памяти (ему даже не нужна видеокарта), и вы можете подключиться к нему удаленно, используя клиент VNC.

Пакет Ubuntu в Universe называется vnc4server . Вы можете запустить отображение с помощью следующей команды:

vnc4server :10

Когда вы запускаете его в первый раз, он запрашивает у вас пароль, но, поскольку вам не нужно удаленно подключаться к дисплею, вы можете ввести что угодно. Обратите внимание, что при этом открывается порт на вашей машине (5910 в этом примере), который можно использовать для подключения к этому новому X-дисплею, поэтому было бы разумно его настроить.

Теперь запустите скрипт cron с DISPLAY=:10.0 в своей среде, и он должен использовать дисплей VNC.

0

Похоже, ваш сервер работает на уровне запуска 5 (X11 активен). То, что вы можете хотеть, это уровень запуска без этого, так что попробуйте 3 для запуска Xvfb? (при условии, что вы не запускаете Ubuntu, в этом случае это может стать уродливым)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .