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!