V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
deasty
V2EX  ›  问与答

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

  •  
  •   deasty · 2019-05-19 11:24:25 +08:00 via iPhone · 5244 次点击
    这是一个创建于 2010 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这么写是不是不行啊?
    0 8 */20 * * do.sh
    14 条回复    2019-05-19 21:10:12 +08:00
    iwishing
        1
    iwishing  
       2019-05-19 11:32:29 +08:00
    写 2 个 cron job 吧,一个计数,一个执行
    ochatokori
        2
    ochatokori  
       2019-05-19 11:33:19 +08:00 via Android   ❤️ 4
    不行,这样只会在每月 20 号执行

    一般每 xx 天执行我是
    0 80 * * * do.sh
    然后在 do.sh 里面判断今天是不是在 xx 天这个周期
    或者等楼下大佬更好的做法
    dream7758522
        3
    dream7758522  
       2019-05-19 11:44:57 +08:00 via Android
    提前生成 100 个间隔 20 天的日期,比如 1 月 1 日,1 月 20 日,2 月 10 日。然后批量定时
    dream7758522
        4
    dream7758522  
       2019-05-19 11:53:37 +08:00 via Android
    或者设计一个脚本,计算 20 天后的日期,调用 crontab 定时,20 天后运行自己,如此循环
    alect
        5
    alect  
       2019-05-19 12:01:44 +08:00 via iPhone
    awss
        6
    awss  
       2019-05-19 12:07:19 +08:00 via iPhone   ❤️ 9
    这种可以拆一下去做,比如这样分成 2 个任务:
    奇数月份 1 号、20 号各执行一次
    偶数月份 10 号执行一次
    carlclone
        7
    carlclone  
       2019-05-19 14:47:18 +08:00
    2 楼那种就好了 , Laravel 任务调度 的实现方式
    quqiuzhu
        8
    quqiuzhu  
       2019-05-19 15:57:12 +08:00 via Android
    每天调度一次,代码里面判断是否够 20 天。
    icy37785
        9
    icy37785  
       2019-05-19 17:39:33 +08:00 via iPhone
    6 楼方法其实不错
    webdisk
        10
    webdisk  
       2019-05-19 17:42:18 +08:00
    fcron 直接
    480h command
    就行
    boris1993
        11
    boris1993  
       2019-05-19 18:55:46 +08:00 via Android
    同意 #2 的。#6 的感觉碎片了.....
    ps1aniuge
        12
    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
        13
    ps1aniuge  
       2019-05-19 20:19:31 +08:00
    脚本测试通过,win,linux 通用。
    0ZXYDDu796nVCFxq
        14
    0ZXYDDu796nVCFxq  
       2019-05-19 21:10:12 +08:00 via Android
    用日期计算今天减 19700101,与 20 求余,结果等于某个数执行
    cron 里就写每天执行一次
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5808 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 03:20 · PVG 11:20 · LAX 19:20 · JFK 22:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.