hee*_*ayl 26
把它放在你的crontab.
cron通过以下方式打开您的桌子:
crontab -e
Run Code Online (Sandbox Code Playgroud)
现在添加:
*/5 * * * * /path/to/script.sh
Run Code Online (Sandbox Code Playgroud)
不要忘记事先使脚本可执行。
由于您的脚本依赖于 X,因此将 加入DISPLAY到脚本环境中可能是一个好主意:
*/5 * * * * DISPLAY=:0 /path/to/script.sh
Run Code Online (Sandbox Code Playgroud)
替换:0为您的实际DISPLAY(可以echo $DISPLAY从交互式会话中找到)。
如果需要,您也可以添加XAUTHORITY环境变量:
*/5 * * * * DISPLAY=:0 XAUTHORITY="~/.Xauthority" /path/to/script.sh
Run Code Online (Sandbox Code Playgroud)
同样,您可以通过 找到该值echo $XAUTHORITY。
Jac*_*ijm 14
如果您想要简单的方法,并且不必找出要设置的环境变量:
将以下内容添加到启动应用程序:
/bin/bash -c "sleep 15 && while true; do <path_to_your_script.sh> ; sleep 300; done"
Run Code Online (Sandbox Code Playgroud)
Dash > 启动应用程序 > 添加。添加命令:
/bin/bash -c "sleep 15 && while true; do <path_to_your_script.sh> ; sleep 300; done"
Run Code Online (Sandbox Code Playgroud)如果您从自己的环境(例如从终端窗口或从启动应用程序)运行脚本,将设置许多环境变量。cron但是,使用一组有限的环境变量运行您的脚本。
由于您的脚本无疑使用了以下gsettings命令:
gsettings get org.gnome.desktop.background picture-uri <wallpaper>
Run Code Online (Sandbox Code Playgroud)
要设置墙纸,几乎可以肯定,从cron.
“懒惰的解决方案”的缺点纯粹是理论上的。几乎连续休眠的命令对您的系统毫无意义。
阅读这篇文章,根据过去的经验,我很确定DBUS_SESSION_BUS_ADDRESS需要设置环境变量。
为此,请在脚本开头(shebang 下方)添加以下部分:
PID=$(pgrep gnome-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)
Run Code Online (Sandbox Code Playgroud)
然后你应该能够成功地从cron.
但是,您可以很好地避免喧嚣,并选择懒惰的选项。