每5分钟运行一次.sh

我有一个.sh脚本,从日本卫星的服务器下载照片并将其设置为背景图片。 我把它放入启动列表中,但是我如何自动运行它,比如5分钟?

懒惰的选择

如果您想要简单的方法,并避免必须找出要设置的环境变量:

  • 确保您的脚本包含shebang
  • 让它可执行
  • 将以下内容添加到启动应用程序:

    /bin/bash -c "sleep 15 && while true; do  ; sleep 300; done" 

    Dash>启动应用程序>添加。 添加命令:

     /bin/bash -c "sleep 15 && while true; do  ; sleep 300; done" 

说明

如果从您自己的环境(例如,从终端窗口或从启动应用程序)运行脚本,则将设置许多环境变量。 然而, cron使用一组有限的环境变量来运行脚本。
由于您的脚本无疑使用gsettings命令:

 gsettings get org.gnome.desktop.background picture-uri  

设置壁纸,几乎可以肯定,从cron运行时命令会中断。

“懒惰解决方案”的缺点纯粹是理论上的。 实际上连续睡眠的命令对您的系统没有任何意义

附加信息; 或者

阅读这篇文章 ,从过去的经验DBUS_SESSION_BUS_ADDRESS ,我很确定需要设置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成功运行它。

然而,你可以很好地拯救喧嚣,并选择懒惰的选项。

把它放在你的crontab

打开你的cron表:

 crontab -e 

现在添加:

 */5 * * * * /path/to/script.sh 

不要忘记事先使脚本可执行。


由于您的脚本依赖于X,因此将DISPLAY添加到脚本环境中可能是个好主意:

 */5 * * * * DISPLAY=:0 /path/to/script.sh 

替换:0与您的实际DISPLAY (可以通过交互式会话中的echo $DISPLAY找到)。

如果需要,您也可以添加XAUTHORITY环境变量:

 */5 * * * * DISPLAY=:0 XAUTHORITY="~/.Xauthority" /path/to/script.sh 

您可以通过echo $XAUTHORITY找到该值。