четверг, 25 марта 2010 г.

Cron и GUI-приложения на примере VirtualBox

Задачка простая: надо запускать графическую программу по расписанию. Например, недавно встала задача запускать машину VirtualBox по расписанию. Если просто написать команду запуска машины от имени юзера, то ответ будет чем-то вроде:
ERROR: Virtual machine 'WinXP' has terminated unexpectedly during startup
Сообщение ни о чем толком не говорит. В конференции debian@conference.jabber.ru подсказали, что дело в переменной DISPLAY. Программа пытается подключиться к дисплею, описанному в этой переменной, а там пусто. Решение очень простое. Сначала можно подсмотреть что у вас написано в этой переменной, запустив в терминале команду:
$ echo $DISPLAY
Команда покажет что-то вроде:
:0.0
Это и есть идентификатор дисплея. Дальше перед командой запуска в /etc/crontab задаем переменную и всё работает. Для VirtualBox это выглядит так:
DISPLAY=":0.0" VBoxManage startvm "MyVM"

Комментариев нет: