crontab 如何实现每 20 天执行任务?

2019-05-19 11:24:25 +08:00
 deasty
这么写是不是不行啊?
0 8 */20 * * do.sh
5055 次点击
所在节点    问与答
14 条回复
iwishing
2019-05-19 11:32:29 +08:00
写 2 个 cron job 吧,一个计数,一个执行
ochatokori
2019-05-19 11:33:19 +08:00
不行,这样只会在每月 20 号执行

一般每 xx 天执行我是
0 80 * * * do.sh
然后在 do.sh 里面判断今天是不是在 xx 天这个周期
或者等楼下大佬更好的做法
dream7758522
2019-05-19 11:44:57 +08:00
提前生成 100 个间隔 20 天的日期,比如 1 月 1 日,1 月 20 日,2 月 10 日。然后批量定时
dream7758522
2019-05-19 11:53:37 +08:00
或者设计一个脚本,计算 20 天后的日期,调用 crontab 定时,20 天后运行自己,如此循环
alect
2019-05-19 12:01:44 +08:00
awss
2019-05-19 12:07:19 +08:00
这种可以拆一下去做,比如这样分成 2 个任务:
奇数月份 1 号、20 号各执行一次
偶数月份 10 号执行一次
carlclone
2019-05-19 14:47:18 +08:00
2 楼那种就好了 , Laravel 任务调度 的实现方式
quqiuzhu
2019-05-19 15:57:12 +08:00
每天调度一次,代码里面判断是否够 20 天。
icy37785
2019-05-19 17:39:33 +08:00
6 楼方法其实不错
webdisk
2019-05-19 17:42:18 +08:00
fcron 直接
480h command
就行
boris1993
2019-05-19 18:55:46 +08:00
同意 #2 的。#6 的感觉碎片了.....
ps1aniuge
2019-05-19 20:17:18 +08:00
8 楼方法的 linux 版 powershell 代码:
假设今天是 2 日,
假设脚本为 [/tmp/mg 每隔 n 天任务计划.ps1]

```
#建议保存编码为:bom 头 + utf8

$当前脚本最后修改时间 = (Get-Item $PSCommandPath).lastwritetime
if ($(get-date) -gt $当前脚本最后修改时间.adddays(20) )
{
你的 xxx 命令 #执行你的间隔 n 天任务
Add-Content -LiteralPath $PSCommandPath -Value '' #在当前脚本中插入回车
}
```
ps1aniuge
2019-05-19 20:19:31 +08:00
脚本测试通过,win,linux 通用。
gstqc
2019-05-19 21:10:12 +08:00
用日期计算今天减 19700101,与 20 求余,结果等于某个数执行
cron 里就写每天执行一次

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

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

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

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

© 2021 V2EX