Назад | Перейти на главную страницу

Cron и интерактивное приложение

Я хочу запланировать приложение с графическим интерфейсом в cron, но возникла проблема. Когда cron пытается запустить запланированную задачу (в моем случае amarok), он выдает cannot connect to X server ошибка. Я предполагаю, что это потому, что приложение выполняется из моей учетной записи root. Можно ли запустить приложение из рута, но прикинуться кем-то другим?

Спасибо.

я думаю, что это плохая идея, тем не менее вы можете выполнить как root:

su -c 'export DISPLAY=":0.0"; amarok' username

Я предполагаю, что сеанс x запущен, и у вас есть пользователь имя пользователя.

но ... вы можете запускать скрипты cron как не root - так почему вы настаиваете на том, чтобы вызывать его как root? есть также много командная строка контролируемый СМИ плееры - может, амарок все-таки не нужен?

чтобы запустить скрипт как не root, поместите в / etc / crontab

25 6    * * *   username /script/you/want/to/execute.sh

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

Cronjobs запускаются в очень ограниченной среде, что означает, что он не знает, где найти X-сервер ( $DISPLAY переменная среды не существует).

Если вы хотите запустить приложение X из crontab, вам нужно сначала установить $DISPLAY переменная окружения.

Либо назовите AmaroK как pQd сказал, или установите его для всего cron-скрипта:

DISPLAY=:0.0
# ...
* * * * * amarok

Кроме того, я бы порекомендовал вам запускать это как учетную запись, которой вы «хотите быть», а не root, это делается путем запуска crontab -e как пользователь.

РЕДАКТИРОВАТЬ:

У вас тоже должно получиться так:

* * * * * export DISPLAY=:0.0 && amarok