我尝试了多种方法来解决此问题,但我只想在 cron 中运行此脚本时更改桌面壁纸。以下是我目前所做的。
PID=$(pgrep gnome-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)
sudo gsettings set org.gnome.desktop.background picture-uri file:///home/mark/Pictures/Background_Pictures/CAP.jpg
当我在 cron 中运行此命令时出现以下错误。
(process:17154): dconf-WARNING **: failed to commit changes to dconf: Cannot autolaunch D-Bus without X11 $DISPLAY
我知道问题的一部分是我需要设置变量DBUS_SESSION_BUS_ADDRESS
,但我已经设置了,而且它似乎有一个有效值。
我不知道该如何实现这一点。有人对此有有效的解决方案吗?
答案1
找到了解决方案。我使用了以下脚本。
PID=$(pgrep gnome-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)
gsettings set org.gnome.desktop.background picture-uri "file:///home/mark/Pictures/Wallpapers/CAP.jpg"
但是,问题出在我的 cron 文件中。我使用了以下行
***** root sh /home/mark/scripts/desktop.sh
而本该如此
***** mark sh /home/mark/scripts/desktop.sh
当我使用自己的权限在 cron 中运行该脚本时,我就能够成功在 cron 中运行该脚本。