我制作了这个简单的脚本:
#!/bin/bash
# If started as root, then re-start as user "cyril":
if [ "$(id -u)" -eq 0 ]; then
exec sudo -H -u cyril $0 "$@"
fi
wget -q -O /tmp/wallpaper.jpg https://source.unsplash.com/1920x1080/?landscape,mountain,forest,stars,space,galaxy;
gsettings set org.gnome.desktop.background picture-uri-dark file:///tmp/wallpaper.jpg;
gsettings set org.gnome.desktop.background picture-uri file:///tmp/wallpaper.jpg;
exit 0;
把它移到 /etc/cron.hourly/1wallpaper 并给它一个 chmod +x。
如果我从 bash 手动运行它,它工作正常。在 cron.hourly 上应该每小时运行一次,每小时给我一个不同的背景,但事实并非如此,几个小时之间没有任何变化。
我错过了什么?
我确保运行的用户gsettings
是我,以免更改 root 用户的背景。
我想知道,当使用 cron 运行时,是否运行了另一种与我正在做的不兼容的 shell。
我正在使用 Fedora 36。
Ask Ubuntu 上的这个问题处理了同样的问题。解决方案
的核心是提供环境变量的正确值。
cron
DBUS_SESSION_BUS_ADDRESS