我的 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 中提到的命令时,这两个命令都有效。
如果我遗漏了某些步骤,您能告诉我吗?
编辑:
我创建了一个脚本文件,并使用 cron 执行它:
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
在 cron 中运行?
答案1
你确定 cron 没有工作吗?如果你添加如下一行
*/1 * * * * touch /tmp/foobar123
到你的 crontab,那么该文件会出现在/tmp
?
如果一分钟后该文件仍未出现,那么
ps auxw | grep cron
或者
sudo service cron status
如果 cron 没有运行,请尝试使用以下命令启动它
sudo service cron start
但是我猜上面的命令的问题是,它gsettings
需要正确设置其环境才能运行,而从 运行时它可能没有cron
。
答案2
感谢 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-)