Я пытаюсь изменить обои на случайное изображение с помощью предложенного Индраджитом Индрапрастама сценария: Как изменить фон рабочего стола из командной строки в Unity?
Когда я запускаю скрипт из окна терминала, bg меняется очень хорошо, но когда он запускается из cron, я получаю эту ошибку по почте:
(процесс: 21901): dconf-WARNING **: не удалось зафиксировать изменения в dconf: ошибка создания командной строки 'dbus-launch --autolaunch = 00216c114dcf433c9bb9009985d607d6 --binary-syntax --close-stderr': дочерний процесс завершен с кодом 1
Буду признателен за любые предложения.
Ответы:
Редактирование настроек из cron; отсутствует переменная окружения
Если вы запускаете сценарий из собственной среды (например, из окна терминала или из автозагрузки), будет установлен ряд переменных среды.
cron
однако ваш скрипт запускается с ограниченным набором переменных среды.Для
gsettings
успешного редактирования изcron
, вам нужно установитьDBUS_SESSION_BUS_ADDRESS
переменную окружения. Вы можете сделать это, добавив две строки в ваш скрипт, как описано здесь (и ниже).Ваш скрипт, в том числе установка необходимой переменной
Сценарий здесь , отредактировано включить
DBUS_SESSION_BUS_ADDRESS
переменное окружение, то становится:Связанный: Запуск .sh каждые 5 минут
источник
PID=$(pgrep -f 'gnome-session' | head -n1)
!DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)
на$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ)
Так как grep тоже получает имя переменной. Источникpgrep gnome-session
может вернуть более одного pid, если в систему вошли несколько пользователей (каждый из которых запускает gnome-сеанс). Возможно,EUID=$(id --real --user)
иPID=$(pgrep --euid $EUID gnome-session)
был бы способ получить только PID, связанный с сеансом gnome текущего пользователя.