Запустите gsettings с помощью crontab
Я сделал простой скрипт на python, чтобы поменять обои (Ubuntu 18.04) путем случайного захвата изображения в определенной папке. Я использую команду gsettings. Он работает, когда я запускаю его вручную, но я хочу автоматизировать его с помощью crontab.
У меня была следующая ошибка, потому что в crontab не все переменные, которые были у меня при запуске скрипта вручную:
(process:xxxxx): dconf-WARNING **: 15:07:01.547: failed to commit changes to dconf: Impossible de lancer automatiquement D-Bus sans $DISPLAY X11
Поэтому я нашел несколько решений, таких как:
dbus_session_bus_address = 'PID=$(pgrep gnome-session | head -n1) && export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-) && '
command = dbus_session_bus_address + 'gsettings set org.gnome.desktop.background picture-uri ' + getRandomImage()
Кажется, это работает для большинства людей, но у меня есть проблема, мой crontab не имеет разрешений:
grep: /proc/$pid/environ: Permission denied
dconf-WARNING **: 15:19:01.514: failed to commit changes to dconf: The address indicated is empty
Итак, я запускаю скрипт с sudo crontab -e
, но у меня есть следующая ошибка:
dconf-WARNING **: 15:22:01.807: failed to commit changes to dconf: Connection is closed
Кроме того, я предпочитаю использовать мой пользовательский crontab. Каков наилучший способ сделать это?
1 ответ
Благодаря комментарию Steeldriver, я нашел решение!
На самом деле, pgrep gnome-session
Команда дает мне 2 PID.
Когда я ls -l /proc/
Я вижу, что первый каталог pid принадлежит gdm (Gnome Display Manager), а второй принадлежит моему пользователю.
Так что в моем сценарии я просто заменяю PID=$(pgrep gnome-session | head -n1)
от PID=$(pgrep gnome-session | tail -n1)
использовать идентификатор PID для моего пользователя.
Я не знаю, если это решение (с tail -n1
) может работать для всех. Я думаю, что лучшее, что нужно сделать, это запустить pgrep gnome-session
Команда, посмотрите на владельца папок pid и выберите ту, которая принадлежит нашему пользователю.
Надеемся, что это будет полезно!