Перенаправление X выводов

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

Я пытался автоматизировать эту программу для выполнения периодически на сервере в моем офисе. Проблема, Она только работает, когда я имею 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...

3
задан 21.08.2011, 10:00

3 ответа

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

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

vnc4server :10

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

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

1
ответ дан 07.12.2019, 23:30

В Ubuntu, echo $DISPLAY вероятно, урожаи :0.0, сообщение Вам Ваша сессия Ubuntu использует дисплей 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
ответ дан 07.12.2019, 23:30

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

0
ответ дан 07.12.2019, 23:30
  • 1
    Да, Ubuntu имеет некоторую странную конфигурацию для runlevels. Значение по умолчанию runlevel равняется 2, я думаю, и, кажется, нет никакого runlevel без выполнения X11. Если Вы не уверены в runlevels, читайте на документах. – brandstaetter 23.10.2009, 09:35

Теги

Похожие вопросы