技术解析

crontab 能否实现每 50 秒执行一次定时任务
0
2021-06-21 09:45:17
idczone
我有一个需要定时 50 秒执行一次任务的需求,想了半天,只能实现每 10 秒执行一次、30 秒执行一次,就是不知道 50 秒执行一次能不能设置,求指教
大概不行。可以设置成 10 秒执行一次,然后记录一下执行次数,到 5 了才实际执行代码。

bash
sleep 50
balabala
crontab -e
* * * * * /something/bashfile

厉害了

你都会设置 30 秒了,50 秒为啥不能设置?

之前试过用 cron 表达式应该是不行的

试一下
*/50 * * * * *
是不是可行

这肯定不行,60 秒一个周期,30 秒内的都可以这样。大于的就不行

* * * * * /bin/bash -l -c "/path/to/executable; sleep 50 ; /path/to/executable"

我也觉得大于 30 秒的都不行


@horek
cron 表达式 */n 的含义是,当秒数 /分钟数...能被 n 整除时执行, 而不是每 n 分钟执行.

https://crontab.guru
最少是 1 分钟


你两这个不仍然 1 分钟一次?

你这个不是 50 分钟才一次?
lz 说的是每 50 秒一次吧?@horek

其实搭配 sleep 是可以实现任意秒数间隔的 就是蛋疼了一点
比如想要 10s 间隔,那就取个分钟整数,做 sleep 10/20/30/40/50/60 6 个 cronjob (*/1 * * * *)
要 30s 间隔,就 sleep 30/60,两个 cronjob, (*/1 * * * *)
比如楼主想要 50s,那就取整到 300s,弄这么几个....... 每 300 秒装填 6 个任务,分别以 50 秒间隔来执行。
```
*/5 * * * * (sleep 50; echo `date` >> /tmp/50s.log)
*/5 * * * * (sleep 100; echo `date` >> /tmp/50s.log)
*/5 * * * * (sleep 150; echo `date` >> /tmp/50s.log)
*/5 * * * * (sleep 200; echo `date` >> /tmp/50s.log)
*/5 * * * * (sleep 250; echo `date` >> /tmp/50s.log)
*/5 * * * * (sleep 300; echo `date` >> /tmp/50s.log)
```
测试输出是这样,符合预期 挺 2b 的方法.... but it works!
数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服