1
yeqizhang 2020-05-21 20:29:44 +08:00 via Android
写一个脚本,开机启动后,关机命令前的代码阻塞三天哈哈哈
|
2
vcheckzen 2020-05-21 20:35:31 +08:00 via Android
有点经验,楼主可加我
cXEzMzE5MTQ5MTA= |
3
AngryPanda 2020-05-21 20:50:21 +08:00 via Android
sleep😿
|
4
98546116 OP @AngryPanda 不是只执行一次,是每隔三天循环执行,sleep 实现不了吧
|
5
intelmd 2020-05-21 20:57:11 +08:00 via Android
每天一次,启动后检查当前日期是不是 3 的倍数,是的话运行。
|
6
ETiV 2020-05-21 20:58:34 +08:00 via iPhone
while true; do
xxxx sleep 3 天 done |
7
AngryPanda 2020-05-21 21:05:28 +08:00 via Android
* * */3 * * /path/to/your/file
不行么 |
8
98546116 OP @AngryPanda 月头月尾会有问题的
|
12
liyvhg 2020-05-21 21:45:18 +08:00 via Android
建议贴出原始需求
|
13
Acoffice 2020-05-21 21:45:45 +08:00 via Android
@AngryPanda 你这么写,是每分钟执行一次.
|
14
98546116 OP @ETiV 我实测*/3 这种方式出来的结果是 3 6 9····30 运行与路由器启动日期无关
|
15
Acoffice 2020-05-21 21:50:11 +08:00 via Android
0 0 */3 * * /path/script
|
16
98546116 OP @liyvhg 原始需求就是 以路由器启动后的时间计算 每隔三天自动运行一次命令 但是我这边用 corn 实测,在月末 30 号 31 号与月初 1 号 2 号之间并不是严格的间隔三天执行
|
17
Acoffice 2020-05-21 21:53:54 +08:00 via Android
@98546116 每次执行完,用文件记录当前日期,每天去检查一次这个日期,然后相减等于 3,就执行.
|
18
98546116 OP @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 * *也类似,在月末 月初交替的时候会出问题的 |
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 小于 |
20
AngryPanda 2020-05-21 22:28:43 +08:00
严格的那就每天启动,然后和上次运行时间比较,看看是不是恰好是第三天。
|