Не отрабатывает bash скрипт из cron
Есть вот такой простенький скрипт, меняющий тему в соответсвии с промежутком времени:
#!/bin/bash
HOUR=$(date +%H)
if [ "$HOUR" -ge "19" ] || [ "$HOUR" -lt "7" ]
then
gsettings set org.gnome.desktop.interface gtk-theme "Numix-Dark"
gsettings set org.gnome.shell.extensions.user-theme name "Numix-Dark"
else
gsettings set org.gnome.desktop.interface gtk-theme "Numix"
gsettings set org.gnome.shell.extensions.user-theme name "Numix"
fi
В cron'е вызываю его раз в 10 минут:
# m h dom mon dow command
*/10 * * * * bash /home/hackerman/toogle-mode.sh
cron запущен и работает (проверял через systemctl и эксперементально), но скрипт не отрабатывает почему-то (в выводе cat /var/log/syslog | grep "cron" никаких ошибок). Однако при запуске из терминала ручками, скрипт отрабатывает.
В чём может быть причина?
Ответы (1 шт):
Автор решения: Vladislav Tikhomirov
→ Ссылка
Проблема была на поверхности. cron'у доступен лишь ограниченный набор переменных окружения, а для выполнения моего скрипта необходимо было обращение к gsetting, соответственно нужна была переменная DBUS_SESSION_BUS_ADDRESS
В скрипт были добавлены следующие строки:
PID=$(pgrep gnome-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)
Спасибо этому товарищу