我有一个 .sh 脚本,可以从日本卫星的服务器下载一张照片并将其设置为背景图片。我已将其放入启动列表中,但如何每隔 5 分钟自动运行一次?
答案1
把它放进你的crontab
。
通过以下方式打开您的cron
桌子:
crontab -e
现在添加:
*/5 * * * * /path/to/script.sh
不要忘记事先使脚本可执行。
DISPLAY
由于您的脚本依赖于 X,因此将其添加到脚本的环境中可能是一个好主意:
*/5 * * * * DISPLAY=:0 /path/to/script.sh
:0
用您的实际情况进行替换DISPLAY
(可以从echo $DISPLAY
交互式会话中找到)。
如果需要,您XAUTHORITY
也可以添加环境变量:
*/5 * * * * DISPLAY=:0 XAUTHORITY="~/.Xauthority" /path/to/script.sh
您还可以通过 找到值echo $XAUTHORITY
。
答案2
懒惰的选择
如果您想要简单的方法,并且避免必须找出要设置哪个环境变量:
- 确保你的脚本包含shebang
- 使其可执行
将以下内容添加到启动应用程序:
/bin/bash -c "sleep 15 && while true; do <path_to_your_script.sh> ; sleep 300; done"
Dash > 启动应用程序 > 添加。添加命令:
/bin/bash -c "sleep 15 && while true; do <path_to_your_script.sh> ; sleep 300; done"
解释
如果您从自己的环境(例如从终端窗口或启动应用程序)运行脚本,则会设置许多环境变量。cron
但是,使用一组有限的环境变量运行脚本。
由于您的脚本无疑使用了以下gsettings
命令:
gsettings get org.gnome.desktop.background picture-uri <wallpaper>
设置壁纸,从 运行时命令几乎肯定会中断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-)
然后您应该能够从 成功运行它cron
。
然而,你也可以省去很多麻烦,选择懒惰的选项。