我制作了这个简单的脚本:
#!/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。
答案1
这个问题可以在 Ask Ubuntu 上找到处理同样的问题
。解决方案是提供cron
正确的环境变量值DBUS_SESSION_BUS_ADDRESS
。