Я хочу запланировать приложение с графическим интерфейсом в 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