[疑问]如何使用 cron 让脚本每 7 分钟执行一次?

209 天前
 wuyadaxian
我的环境是 Ubuntu 22.04LTS 。
要求是从现在或者某个时间点开始,每 7 分钟执行一次 test.sh 脚本。
只能使用 crontab 来编写。
只是讨论,真正实现的时候肯定用 bash 或者其他语言脚本更方便实现。
15642 次点击
所在节点    程序员
162 条回复
tmtstudio
209 天前
*/7 * * * * test.sh
oneisall8955
209 天前
每隔 7 分钟执行一次?

https://crontab.guru/#*/7_*_*_*_*
superrichman
209 天前
60 不能被 7 整除,单纯用 cron 是不行的
FranzKafka95
209 天前
@superrichman 为什么要考虑 60 被 7 整除,op 的需求只是间隔 7 分钟
xzh920126
209 天前
cron 每分钟执行一次 sh ,在 sh 里判断时间
timnottom
209 天前
这个我知道,用两个 cron 表达式执行同一个命令
Puteulanus
209 天前
用 7 条 cron 把一个 420 分钟循环内落在每个小时里的分钟数都给写上,应该可以
wuyadaxian
209 天前
@xzh920126 sh 不能修改。实际上可能是我不能控制的已经封装好的程序。这里只是讨论单纯用 crontab 内能不能实现。用 sh 就很方便了。
ugpu
209 天前
*/7 * * * * /path/to/test.sh
abelyao
209 天前
@tmtstudio
@oneisall8955
@FranzKafka95
@xzh920126

cron 不行吧?*/7 * * * * 的话,在 17:56 会执行一次,在 18:00 又会执行一次了
xzh920126
209 天前
@wuyadaxian 可以把执行时间写入一个文件缓存,cron 每分钟调用 t1.sht1.sh 里读取缓存做时间判断,再调用 test.sh
superrichman
209 天前
@FranzKafka95 因为 cron 表达式 */7 只会在能被 7 整除的时候执行,举例来说 17:56 和 18:00 的时候都会执行,这可不是每 7 分钟运行一次的意思。
dapang1221
209 天前
*/7 * * * * date >> /var/root/test.log

加上了,半小时后我过来回复到底能不能用
xzh920126
209 天前
@wuyadaxian 明白你的意思了,等大佬解惑~
bthulu
209 天前
别用 cron, 不稳定, 不定什么时候就漏执行了
wuyadaxian
209 天前
@xzh920126 都上 sh ,不如直接 sh 内调用,然后 sleep 420 。循环就好。所以只是在讨论。实际用其他脚本语言会更快。
Moyyyyyyyyyyye
209 天前
整个公倍数,每分钟都列出来
ChengLuffy
209 天前
@wuyadaxian cron 每分钟 -> bash 脚本判断 -> 目标程序执行
1462326016
209 天前
如果解决不了问题那么就加一层
这里假设楼上所说的不能被 60 整除的问题存在且不能单纯的使用 */7 * * * * /path/to/test.sh 这种方式来解决问题
可以再写一个脚本来调用 test.sh ,在那个脚本里面可以任意判断了。
lithiumii
209 天前
cron 写每分钟运行,命令先判断当前时间是否整除然后再运行,bash 的各种离谱写法应该可以实现

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1045433

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX