Мой crontab похож следующим образом (я пытаюсь изменить свою тему GNOME),
crontab -l
0 5 * * * /usr/bin/gsettings set org.gnome.desktop.interface gtk-theme 'Adapta'
30 21 * * * /usr/bin/gsettings set org.gnome.desktop.interface gtk-theme 'Adapta-Nokto'
Кроме того, я создал этот файл
echo $USER
nikhil
cat /etc/cron.allow
nikhil
Когда я выполняю команду, как упомянуто в crontab, оба из тех работают.
Вы могли сказать, пропустил ли я некоторый шаг?
Править:
Я создал файл сценария, который я выполняю с кроном:
export TERM=xterm-256color
TimeHr=$(date +%H)
if ((${TimeHr}>18 || ${TimeHr}<5)); then
#if [${TimeHr} -gt 11 || ${TimeHr} -lt 5]; then
mkdir ${HOME}/Documents/TestNight
/usr/bin/gsettings set org.gnome.desktop.interface gtk-theme 'Adapta'
else
mkdir ${HOME}/Documents/TestDay
/usr/bin/gsettings set org.gnome.desktop.interface gtk-theme 'Adapta-Nokto'
fi
Это - crontab
$ crontab -l
36 5,19,23 * * * bash /home/nikhil/GnomeThemeChange
@reboot bash /home/nikhil/GnomeThemeChange
cron
действительно работает, поскольку это может создать Тестовые Папки. Но, что я должен сделать для выполнения gsettings
в кроне?
Благодаря Tomáš Pospíšek для предложений.
Добавьте следующее к сценарию:
PID=$(pgrep gnome-session | tail -n1)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)
Вы - верный крон, не работает? Если Вы добавляете строку как
*/1 * * * * touch /tmp/foobar123
к Вашему crontab, затем делает файл, появляются в /tmp
?
Если тот файл не появится приблизительно после одной минуты, то
ps auxw | grep cron
или
sudo service cron status
Если крон не работает, то попытайтесь запустить его с
sudo service cron start
Но я предполагаю, что проблема с Вашей командой выше, это gsettings
потребности настроить его среду правильно для выполнения, от которого она, вероятно, не имеет, когда выполнено cron
.