请教一下, Padavan 固件如何实现启动后每隔三天执行一次命令 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
98546116
V2EX    路由器

请教一下, Padavan 固件如何实现启动后每隔三天执行一次命令

  •  
  •   98546116 2020-05-21 20:23:20 +08:00 via iPhone 3341 次点击
    这是一个创建于 1973 天前的主题,其中的信息可能已经有所发展或是发生改变。
    本人没有编程基础,查了下 corn 貌似并不严格支持这种方式,目前想法是用 corn 每天执行一次脚本 a,脚本 a 里判断当天是否符合隔三天的条件,然后再执行。目前有两个问题,一是这个脚本 a 咋写?查了下百度,看的有点头晕。二是这个脚本 a 如何上传到路由器固件里并保存?或者如何直接在路由器 web 界面新建一个脚本文件?
    20 条回复    2020-05-21 22:28:43 +08:00
    yeqizhang
        1
    yeqizhang  
       2020-05-21 20:29:44 +08:00 via Android
    写一个脚本,开机启动后,关机命令前的代码阻塞三天哈哈哈
    vcheckzen
        2
    vcheckzen  
       2020-05-21 20:35:31 +08:00 via Android
    有点经验,楼主可加我
    cXEzMzE5MTQ5MTA=
    AngryPanda
        3
    AngryPanda  
       2020-05-21 20:50:21 +08:00 via Android
    sleep
    98546116
        4
    98546116  
    OP
       2020-05-21 20:53:27 +08:00 via iPhone
    @AngryPanda 不是只执行一次,是每隔三天循环执行,sleep 实现不了吧
    intelmd
        5
    intelmd  
       2020-05-21 20:57:11 +08:00 via Android
    每天一次,启动后检查当前日期是不是 3 的倍数,是的话运行。
    ETiV
        6
    ETiV  
       2020-05-21 20:58:34 +08:00 via iPhone
    while true; do
    xxxx
    sleep 3 天
    done
    AngryPanda
        7
    AngryPanda  
       2020-05-21 21:05:28 +08:00 via Android
    * * */3 * * /path/to/your/file

    不行么
    98546116
        8
    98546116  
    OP
       2020-05-21 21:08:52 +08:00 via iPhone
    @AngryPanda 月头月尾会有问题的
    98546116
        9
    98546116  
    OP
       2020-05-21 21:11:37 +08:00 via iPhone
    @ETiV 请教下,如果我把它放在现成的脚本文件里,这个循环会影响后面的命令继续执行吗?
    ETiV
        10
    ETiV  
       2020-05-21 21:40:25 +08:00 via iPhone
    @98546116
    会影响

    可以外头包一层括号,右括号后边加一个& 放到后台执行

    但#7 的就可以的其实…
    liyvhg
        11
    liyvhg  
       2020-05-21 21:40:44 +08:00 via Android
    liyvhg
        12
    liyvhg  
       2020-05-21 21:45:18 +08:00 via Android
    建议贴出原始需求
    Acoffice
        13
    Acoffice  
       2020-05-21 21:45:45 +08:00 via Android
    @AngryPanda 你这么写,是每分钟执行一次.
    98546116
        14
    98546116  
    OP
       2020-05-21 21:47:08 +08:00 via iPhone
    @ETiV 我实测*/3 这种方式出来的结果是 3 6 930 运行与路由器启动日期无关
    Acoffice
        15
    Acoffice  
       2020-05-21 21:50:11 +08:00 via Android
    0 0 */3 * * /path/script
    98546116
        16
    98546116  
    OP
       2020-05-21 21:51:12 +08:00 via iPhone
    @liyvhg 原始需求就是 以路由器启动后的时间计算 每隔三天自动运行一次命令 但是我这边用 corn 实测,在月末 30 号 31 号与月初 1 号 2 号之间并不是严格的间隔三天执行
    Acoffice
        17
    Acoffice  
       2020-05-21 21:53:54 +08:00 via Android
    @98546116 每次执行完,用文件记录当前日期,每天去检查一次这个日期,然后相减等于 3,就执行.
    98546116
        18
    98546116  
    OP
       2020-05-21 21:58:13 +08:00 via iPhone
    @Acoffice
    0 0 0 1/3 * ?最近十次运行时间为
    2020-05-22 00:00:00
    2020-05-25 00:00:00
    2020-05-28 00:00:00
    2020-05-31 00:00:00
    2020-06-01 00:00:00
    2020-06-04 00:00:00
    2020-06-07 00:00:00
    在 31 号和 1 号之间并不是 3 天,至于 0 0 */3 * *也类似,在月末 月初交替的时候会出问题的
    imdong
        19
    imdong  
       2020-05-21 22:24:16 +08:00
    ```
    #!/bin/bash

    time_record_file="$0.time"
    now_time=`date +%s%3N`
    time_diff=${now_time}
    if [ "$1" == 'start' ]; then
    echo ${now_time} > ${time_record_file}
    exit;
    elif [ "$1" == 'start_run' ]; then
    echo '0' > ${time_record_file}
    fi
    if [ -f $time_record_file ]; then
    old_time=`cat ${time_record_file}`
    time_diff=`expr ${now_time} - ${old_time}`
    fi
    if [ ${time_diff} -lt 259200 ]; then
    exit
    fi
    echo ${now_time} > ${time_record_file}

    ############# 开始你的代码
    echo "开始运行了"

    ```

    =============
    如你帖子所希望的,每次运行前检查距离上次运行
    至于 cron 要定义 每分钟执行一次,还是每天执行一次,自己取舍吧。

    cron 里面 /path/script 定时运行即可

    开机启动加入 /path/script start (但开机时不会执行代码)

    如果需要开启时也执行一次代码,就开机启动加入 /path/script start_run

    参考资料:Google Search

    Google 关键词:
    1. shell 时间戳
    2. shell 文件是否存在
    3. shell 减法
    4. shell if 小于
    AngryPanda
        20
    AngryPanda  
       2020-05-21 22:28:43 +08:00
    严格的那就每天启动,然后和上次运行时间比较,看看是不是恰好是第三天。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5456 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 08:09 PVG 16:09 LAX 01:09 JFK 04:09
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86