У меня есть небольшая программа, которая проверяет некоторые элементы веб-сервиса. Программа показывает вывод графических данных и отображает результаты 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
...
Вы могли создать дисплей VNC. VNC предназначается для того, чтобы сделать удаленный рабочий стол: на конце сервера это создает виртуальное X дисплеев, которые представляют в памяти (этому даже не нужна видеокарта), и можно подключить к нему удаленно использование клиента VNC.
Пакет Ubuntu называют vnc4server
во Вселенной. Можно запустить дисплей с помощью следующей команды:
vnc4server :10
При выполнении его впервые, это просит у Вас пароль, но так как Вы не должны соединяться с дисплеем удаленно, можно ввести что-либо. Обратите внимание, что это открывает порт на Вашей машине (5910 в этом примере), который может использоваться для подключения с этим новым X дисплеев, это было бы мудро к брандмауэру это.
Теперь запустите скрипт крона с DISPLAY=:10.0
в его среде, и это должно использовать дисплей VNC.
В 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
показ текущего времени. Это работает на Вас?
Похоже, что Ваш сервер работает в runlevel 5 (активный X11). То, что можно хотеть, является runlevel без этого, так попробуйте 3 для выполнения Xvfb? (принятие Вас не запускает Ubuntu, в этом случае это может стать ужасным),