每 5 分钟运行一次 .sh

每 5 分钟运行一次 .sh

我有一个 .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

然而,你也可以省去很多麻烦,选择懒惰的选项。

相关内容