Автор Тема: Как запустить GUI приложение используя CRON? [решено]  (Прочитано 7999 раз)

Оффлайн Aizen

  • Участник
  • *
  • Сообщений: 67
  • ALT Linux KDesktop 6.0
  Здравствуйте!
 Помогите пожалуйста решить такую задачу. Хочется запустить из-под крона GUI приложение, например Opera.
 Пробовал:
 -указывать полный путь к приложению;
 -просто "opera";
 -создал скрипт, через который запускается опера, сделал его исполняемым, положил в /usr/local/bin;
 -прописывал PATH в crontabs;
 В crontabs указывал:
 -указывал export DISPLAY=:0 opera;
 -указывал DISPLAY=:0 opera;
 -указывал export DISPLAY=:0.0 opera;
 -указывал export DISPLAY=:0 xhost+  opera;
 - и может что-то еще....

 А может вообще нельзя запускать GUI приложения из-под cron'a?  ??? 

 Всем заранее спасибо! :)

P.S. Решил изучить подробно все команды, и застрял на букве "C" )))
« Последнее редактирование: 06.10.2011 14:55:49 от Aizen »

Оффлайн Andrey

  • Участник
  • *
  • Сообщений: 734
Не претендую на правильность и идеальность решения.
#!/bin/sh
XDISP=":0"
XUSER=`who | grep " $XDISP " | awk '{ print $1 }'`.
export XAUTHORITY="/home/"$XUSER"/.Xauthority"
DISPLAY=$XDISP opera

Оффлайн Aizen

  • Участник
  • *
  • Сообщений: 67
  • ALT Linux KDesktop 6.0
 Скажите, а по бокам этой строки, так называемые апострофы, ну которые на букве Ё находятся? И в конце строки - точка? Т.е. так и должно быть?
`who | grep " $XDISP " | awk '{ print $1 }'`.

Вообщем попробовал, но что-то не хочет работать. В почте, которая приходит пользователю, следующие строки:
   No protocol specified
   opera: cannot connect to X server :0. Error: Connection refused.

Жду продолжения)

Оффлайн YYY

  • Мастер
  • ***
  • Сообщений: 6 046
Скажите, а по бокам этой строки, так называемые апострофы, ну которые на букве Ё находятся? И в конце строки - точка? Т.е. так и должно быть?
`who | grep " $XDISP " | awk '{ print $1 }'`.
Вы в терминале добейтесь чтоб
export XDISP=:0; who | grep "$XDISP" | awk '{ print $1 }'
выводило имя пользователя

Оффлайн Карлсон

  • Участник
  • *
  • Сообщений: 1 699
  А может вообще нельзя запускать GUI приложения из-под cron'a?  ??? 

Давайте начнем с ответа на вопрос "зачем вам это надо?". Не исключено, что задача решается более другими методами.

Оффлайн Andrey

  • Участник
  • *
  • Сообщений: 734
Скажите, а по бокам этой строки, так называемые апострофы, ну которые на букве Ё находятся? И в конце строки - точка? Т.е. так и должно быть?
`who | grep " $XDISP " | awk '{ print $1 }'`.

Вообщем попробовал, но что-то не хочет работать. В почте, которая приходит пользователю, следующие строки:
   No protocol specified
   opera: cannot connect to X server :0. Error: Connection refused.

Жду продолжения)
Точки быть не должно.

Оффлайн Aizen

  • Участник
  • *
  • Сообщений: 67
  • ALT Linux KDesktop 6.0
Скажите, а по бокам этой строки, так называемые апострофы, ну которые на букве Ё находятся? И в конце строки - точка? Т.е. так и должно быть?
`who | grep " $XDISP " | awk '{ print $1 }'`.
Вы в терминале добейтесь чтоб
export XDISP=:0; who | grep "$XDISP" | awk '{ print $1 }'
выводило имя пользователя

 
   Выводит имя пользователя, дважды, одно на одной строчке, другое на другой.


  А может вообще нельзя запускать GUI приложения из-под cron'a?  ??? 

Давайте начнем с ответа на вопрос "зачем вам это надо?". Не исключено, что задача решается более другими методами.

 Скорее всего есть и другие методы решения этой задачи. Просто я потратил день на выяснение возможностей cron'a, и хотелось бы добить до конца - можно ли запускать или нет. А если кто-то уже такое делал, то думаю будет замечательно если он поделиться решением! :)

Оффлайн Const

  • Глобальный модератор
  • *****
  • Сообщений: 2 653
  • Даже у плохого модератора есть свои плюсы…
Скорее всего есть и другие методы решения этой задачи. Просто я потратил день на выяснение возможностей cron'a, и хотелось бы добить до конца - можно ли запускать или нет. А если кто-то уже такое делал, то думаю будет замечательно если он поделиться решением! :)
Вообще-то задача cron-а — автоматизация работы.
То есть, делать что-то без участия пользователя.
Спрашивается, зачем в этом случае нам GUI?

Оффлайн Aizen

  • Участник
  • *
  • Сообщений: 67
  • ALT Linux KDesktop 6.0
Скорее всего есть и другие методы решения этой задачи. Просто я потратил день на выяснение возможностей cron'a, и хотелось бы добить до конца - можно ли запускать или нет. А если кто-то уже такое делал, то думаю будет замечательно если он поделиться решением! :)
Вообще-то задача cron-а — автоматизация работы.
То есть, делать что-то без участия пользователя.
Спрашивается, зачем в этом случае нам GUI?
Логично, нечего сказать. Но ведь линукс все может) Если сегодня не решу этот вопрос, тогда тему закрою.

Оффлайн Карлсон

  • Участник
  • *
  • Сообщений: 1 699
Но ведь линукс все может)

Может. Но не все стоит делать.

Начните решить свою задачу по шагам.

1. Научитесь из консоли от пользователя запускать иксовое приложение в запущенные Иксы.
1.1. Сделайте это из скрипта.
2. Научитесь запускать то же самое (т.е. приложения от пользователя из консоли из скрипта в запущенные иксы), но от рута.
3. Впишите это в cron.
4. Поработайте над ошибками, научитесь определять, есть ли нужный пользователь и есть ли у него открытая иксовая сессия и т.п.
5. Подумайте еще раз, нужно ли вам это :)

Оффлайн Andrey

  • Участник
  • *
  • Сообщений: 734
Повторяю, точки быть не должно(закралась при копировании). Все работает, но учтите, от того пользователя от которого выполняется задание в cron -е.

Оффлайн Aizen

  • Участник
  • *
  • Сообщений: 67
  • ALT Linux KDesktop 6.0
Хорошо. Всем спасибо! Буду думать и решать.

Онлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 376
  • Учиться .... Телепатами не рождаются, ими ....
Может вам что-то типа kcron больше подойдёт?

Оффлайн Aizen

  • Участник
  • *
  • Сообщений: 67
  • ALT Linux KDesktop 6.0
Может вам что-то типа kcron больше подойдёт?
Хорошо. Установил kde4admin-kcron и kdeadmin-kcron. По этим же названиям пытался запустить - не получилось. В меню кде искал - не нашел. Через поиск не нашел эту программу, только документацию и еще чёто.
Можете подсказать как это дело запустить? ???

Оффлайн varalt

  • Участник
  • *
  • Сообщений: 996
Может вам что-то типа kcron больше подойдёт?
Хорошо. Установил kde4admin-kcron и kdeadmin-kcron. По этим же названиям пытался запустить - не получилось. В меню кде искал - не нашел. Через поиск не нашел эту программу, только документацию и еще чёто.
Можете подсказать как это дело запустить? ???
Иди в Параметры системы --> Планировщик заданий