每5分钟运行一次.sh


12

我有一个.sh脚本,可以从日本卫星服务器下载照片并将其设置为背景图片。我已将其放入启动列表,但如何每​​隔5分钟自动运行一次?


1
试用cronmaker.com,您可以在其中进行cron表达式并将其与crontab -e放在一起
我们是博格

2
图片是否每5分钟更改一次?尝试使用一个在目标服务器上创建较少不必要负载的时间间隔。或确保仅在文件确实更改的情况下才下载。
til_b

1
顺便说一句,空间背景的网址是什么?
bohdan_trotsenko '16

Answers:


14

懒惰的选项

如果您想要简单的方法,并且避免找出要设置的环境变量,则可以:

  • 确保您的脚本包含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

但是,您可以很好地节省精力,然后选择惰性选项。


@AleksanderMahnyov不客气。很高兴它能起作用:)
Jacob Vlijm '16

2
使用cron作业要好得多。
卢卡·拉米什维利

1
@LukaRamishvili感谢您的评论。但是:为什么是这样?睡眠命令对您的系统没有任何意义。b。我什至包括了该选项。
Jacob Vlijm '16

1
否则,对gnome会话变量进行很好的研究,将对OP很有帮助,因为无论哪种方式都需要。
卢卡·拉米什维利

2
我只是看着:cpu 0.0%我们在谈论什么税?
雅各布·弗利姆

24

把它放在你的crontab

cron通过以下方式打开表格:

crontab -e

现在添加:

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

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


由于您的脚本依赖于X,因此最好将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


1
不知道它是否可以与cron的有限环境变量一起使用,但是让我们看看OP是否提到了它可以工作:)
Jacob Vlijm 2016年

1
@AleksanderMahnyov请编辑您的问题添加脚本,很难说没有看到contents..possibly一个DISPLAY(和/或XAUTHORITY)问题..
heemayl

1
@Kartagis的Cron不能处理秒,你也尝试了几个小时做这仍然是语法错误..
heemayl

2
我喜欢这种方法,而不是“懒惰的方法”,因为我了解cron,但是需要一些进修课程。这正是我所做的,非常感谢!:)
ZaxLofful

2
比接受的答案更好的方法。:)
Sandeep Kumar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.