Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Проблема запуска X-приложения через cron "cannot connect to X server"  (Прочитано 4381 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн xintrea

  • Автор темы
  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Здравствуйте!


Задаю вопрос, не особо надеясь на ответ.. Дистриб Ubuntu 7.04. Нужно сделать простую вещь - вызвать из cron какое-нибудь X-приложение.

Порыскал в инете - у всех эта проблема есть, но решения которые предлагаются у меня не работают.

Например, надо вызвать команду

kdialog --msgbox 'Hello from kdialog'
Если ее просто запустить в консоли, то она работает. Если ее прописать в крон, то получаем ошибку.

Ошибка 1
kdialog: cannot connect to X server
В интернетах нашел, что надо попробовать определить переменную DISPLAY. И если не поможет - попробовать добавить команду xhost.

Я пробую делать так

export DISPLAY=:0.0; xhost +; kdialog --msgbox 'Hello kdialog'
В ответ получаю

Ошибка 2
Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified

xhost:  unable to open display ":0.0"
Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified

kdialog: cannot connect to X server :0.0

Так как во всех обсуждениях какая-то путаница, что должно содержать переменная DISPLAY, и как вызывать xhost, я пробовал следующие команды и разные их варианты, настраивал чтобы cron запускал скрипт от root, от games, от кого только не пробовал. man на xhost ясности не принес, ибо неясно что имется в виду под "именем" которое задает эта команда.

export DISPLAY=:0.0; xhost +; kdialog --msgbox 'Hello kdialog'export DISPLAY=":0.0"; xhost +; kdialog --msgbox 'Hello kdialog'export DISPLAY=:0; xhost +; kdialog --msgbox 'Hello kdialog'export DISPLAY=:0; xhost +local; kdialog --msgbox 'Hello kdialog'export DISPLAY=:0.0; xhost +local:root; kdialog --msgbox 'Hello kdialog'export DISPLAY=:0.0; xhost local:root; kdialog --msgbox 'Hello kdialog'export DISPLAY=:0; xhost local:root; kdialog --msgbox 'Hello kdialog'...

И все время получаю либо ошибку 1 либо ошибку 2.


Вопрос - как же можно запустить нужное X-приложение из cron?

Оффлайн StragNet

  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
а если указать адресок напрмер
/../kdialog --msgbox 'Hello from kdialog'где там лежт это файлик
но я не особо надеюсь что этот ответ верен )))

Оффлайн xintrea

  • Автор темы
  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Полный путь указывать ненужно, программа kdialog находится сама из-под крона.

Спецов нет на форуме?

Оффлайн StragNet

  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Да это я так. Просто у меня php не находился из под крона приходится писать полный путь.

Оффлайн qdesnik

  • Любитель
  • *
  • Сообщений: 58
    • Просмотр профиля
Мужики, такая же проблема.  Ну неужели никто не моГет порешать. Я уже новую тему создал по этому вопросу...
Вы, знающие, да научите других!!!

Оффлайн tolstyj

  • Участник
  • *
  • Сообщений: 186
    • Просмотр профиля
Мужики, такая же проблема.  Ну неужели никто не моГет порешать. Я уже новую тему создал по этому вопросу...

А с пользователями все нормально?
От чьего имени запускает программу крон?

Оффлайн MA3X

  • Активист
  • *
  • Сообщений: 649
    • Просмотр профиля
еще заметил такой грабль. крон вызывается не с тем окружением, которое работает в консоли и в гном-терминале, поэтому многиес скриптыи ик команды работаютк криво или нер работают.

Вскрытиеп показало, что там по умолчанию shell=/bin/sh и очень мало чего в пути.

Чтобы добиться нормальной работы из крона того же cable (скрипта для подъема VPN-соединения), пришлось прописать в него 2 строчки
export SHELL="/bin/bash"
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
и только тогдав все заработало.


Microsoft isn't the answer.
Microsoft is the question, and the answer is NO.

 

Страница сгенерирована за 0.109 секунд. Запросов: 22.