
1 MrUser Dec 24, 2019 每 5 分种执行一次 A 脚本,在 A 脚本里判断是不是第 65N 次。 |
2 lihongjie0209 Dec 24, 2019 每分钟执行一次, 判断和上次执行时间是否超过 65min(每次执行需要写入执行时间) |
3 victor Dec 24, 2019 */5 */1 * * * |
4 geekvcn Dec 24, 2019 用 shell 比较方便,crontab 每小时会重置计时 |
6 yoshiyuki Dec 24, 2019 没有特别好的写法,cron 本身不支持每 65 分钟这种语法 真要特别精准的话,需要一个个时间点写下来,00:00、01:05、etc 这样 |
7 feigle Dec 24, 2019 还有个笨办法,把脚本复制 12 份,每一份每天执行两次,每份之间间隔 65 分钟 |
8 shengchao OP 好吧 得到结论,crontab 真的挫 |
9 FS1P7dJz Dec 24, 2019 技术上的实现如果扭曲 最好先反思一下业务上逻辑是不是存在问题... 65 分钟这种奇怪的要求,往往不应该让系统去做,应该是开发那边做 |
10 sqdxxx Dec 24, 2019 sleep(65*60) |
12 zbl430 Dec 24, 2019 http://qqe2.com/cron 这个可以测试,但是无法应该实现 |
14 maichael Dec 24, 2019 弄个每小时执行一次的,然后脚本里面先睡 5 分钟。 |
15 b821025551b Dec 24, 2019 |
16 b821025551b Dec 24, 2019 @maichael #14 那也还是每 60 分钟一次,而不是 65 |
19 caryqy Dec 24, 2019 5 */1 * * * a++ if a%2 == 1 then run ... fi |
20 caryqy Dec 24, 2019 缺点 需要额外的一个文件保存计数值 |
21 caryqy Dec 24, 2019 不对,我的方法错的 |
23 JJstyle Dec 24, 2019 via iPhone 1/65 * * * *,难道不是这个吗? |
24 momocraft Dec 24, 2019 一本生成 100 次隔 65 分的 crontab 然後用 cron 行 |
25 300 Dec 24, 2019 via Android 每次自动添加一个 65 分钟后的时间的任务? |
26 luban Dec 24, 2019 执行间隔变短,额外的存储控制执行时间 |
27 kilen3a Dec 24, 2019 crontab 建一个只执行一次的脚本,然后等脚本执行完之后计算 65 分钟后的时间,并修改成对应时间,done ! |
28 eason1874 Dec 24, 2019 我实现过类似的需求,写一个 sh 文件,在 crontab 每分钟运行。 然后 sh 文件的代码就是:一个开始时间戳常量,运行的时候,先计算这个时间戳距离当前的分钟数,然后拿这个分钟数去除以 65,如果能被整除说明隔了 65 分钟,那就运行,不能整除就结束,等下一分钟。 |
29 dosmlp Dec 24, 2019 直接的没有,楼里看很多人提出了许多间接的方法应该可以 |
30 KENNHI Dec 24, 2019 via Android ?就没有一个人能想起 systemd 吗 https://wiki.archlinux.org/index.php/Systemd/Timers_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) 我现在连网络都是用 systemd 配置的,systemd 可不只是 init |
32 mahogany Dec 24, 2019 cron */n 指的是分钟数...能被 n 整除时执行,不是每 n 次执行。 为什么非要是 65 分钟,感觉代码不应该依赖这么奇怪的时间 interval。 |
33 DGideas Dec 24, 2019 via Android 写个 shell 循环,然后每次循环先睡 65 分钟,如何? |
34 superrichman Dec 24, 2019 via iPhone crontab 不好做,建议用 python 的 apscheduler 可以随便定义 interval |
35 lululau Dec 24, 2019 30 楼正解,用 systemd/times 替代 cron |
36 kn007 Dec 24, 2019 systemd.timer |
38 zealot0630 Dec 24, 2019 via Android 9102 年了,用 systemd-timer 了,crond 过时了 |
39 hq136234303 Dec 24, 2019 保持一个 date,每五分钟执行,然后当 65 分钟就执行代码清除,循环即可。 |
40 hq136234303 Dec 24, 2019 保持一个 date,每五分钟执行,然后当 65 分钟就执行代码。清除时间,循环即可。 |
41 SenLief Dec 24, 2019 systemd.timer 搞定,很简单的。65min |
42 holinhot Dec 24, 2019 自己写个定时器 |
43 fx Dec 24, 2019 自己写个定时器 + 1 |
44 sx90 Dec 25, 2019 via Android 哦,就延时 65 分钟,非每隔 65 分钟循环执行 crontab 也可以,让脚本自定义 启动脚本 #!/bin/sh time1 = $(date -d "65 minute" +"%-M %-H") crontab -l > confback crontab -l > conf && echo " ${time1} * * * XXXXXXXX.sh >> /tmp/tmp.txt" >> conf && crontab conf && rm -f conf 执行脚本 #!/bin/sh 你自己的代码 crontab confback && rm -f confback 推荐 30 楼大佬的方法,本人萌新,能闷一个是一个,错了别打脸 |
45 cht Dec 25, 2019 个人用 shell + at,最初是应对一些签到网站需要 24 小时 01 分钟或 25 小时后才能重签的问题写的 |
46 dangyuluo Dec 25, 2019 用一些 python 定时库来做,cron 在这种情况下有点不足 |
47 loading Dec 25, 2019 via Android crontab 底层实现不也是每次判断一下? 写个 5 分钟的 shell 就行了,分钟数 65 求个余数。 |
48 ashong Dec 25, 2019 via iPhone 定义多个 task 0 0 0 0 5 1 0 10 2 ... 13 小时一个周期 |
49 ashong Dec 25, 2019 via iPhone 另一种就是 13 分钟执行一次,脚本检查计数,5 次执行一次真正的代码计数归零 |
50 trafficMGR Dec 25, 2019 via Android */65 * * * * 没有了 |
51 guanhui07 Dec 25, 2019 timer |
52 2379920898 Dec 25, 2019 这就比较 LOW 了 |
53 xypty Dec 25, 2019 @trafficMGR 最大 59 的 |
54 geying Dec 25, 2019 好奇什么场景 |
55 SjwNo1 Dec 25, 2019 @trafficMGR interval 最大 60 建议换 timer |
56 palmers Dec 25, 2019 可不可以 13 分钟执行一次, 然后计数到 5 |
57 dog82 Dec 25, 2019 定义 5 分钟一次的 crontab,mod 65 = 0 时执行即可 |
58 raysonlu Dec 25, 2019 我很好奇大家都没有每秒执行的场景吗?用 sleep 不就完事了么,一样的逻辑啊。 0 * * * * sleep 300; 要执行的命令 意思是每小时执行一次,执行前先睡个 300 秒 |
59 wmwmajie Dec 25, 2019 你设置为 60 分钟一次,然后程序里面休眠 5 分钟不就行了。 |
61 zyq2280539 Dec 25, 2019 这个简单啊,写个 shell 放到 crontab 里每天执行一次,然后 shell 里写上代码循环多少次,执行完毕就 sleep 65 分钟,差不多能基本满足需求吧 |
62 JaminT Dec 25, 2019 * * * * * sleep 3900;command |
63 oeagut Dec 25, 2019 via iPhone date 获取 1970 那个日期到现在的秒数,然后对 65*60 这个数取余,如果余数为 0,执行你的东西 然后把上面的写到 crond 里,每分钟执行一下,逻辑没错吧。 |
64 cnbattle Dec 25, 2019 最后结论 代码层处理.. |
66 zhoudaiyu PRO sleep 大法好 |
67 Felldeadbird Dec 25, 2019 cron 每分钟执行,然后业务逻辑进行时间判断。 睡眠固然是好,但要是中途因为突发内存占用问题,进程被清空了,不就凉凉 |
68 ShundL Dec 25, 2019 @cuixiao603 #62 你这个不是成了每分钟执行了? |
69 tinybaby365 Dec 25, 2019 via iPhone at 命令了解一下 |
71 ShundL Dec 25, 2019 @cuixiao603 #70 但 cron 每分钟执行,也就每分钟都创建一个 sleep 65 分钟的任务,每次任务的最终执行时间应该只相差 1 秒吧? |
72 ryanlid Dec 25, 2019 @cuixiao603 #70 细品一下,从第 65 分钟开始,就变成每分钟执行了 |
73 dier Dec 25, 2019 at 命令了解一下 |
74 InternetExplorer Dec 25, 2019 via Android systemd.timer 了解一下,现在的系统应该都是 systemd 的了 |
75 james122333 Dec 25, 2019 shell 强多了 被低估的工具 主要还是太多人写太差了 |
76 james122333 Dec 25, 2019 crontab 的功能完全可以用 shell 实现 |
77 wmwmajie Dec 25, 2019 @shengchao 你的描述是 65 分钟执行一次。 那么我在 crontab 里面加入一个 60 分钟执行一次的任务,然后在任务的代码里面先休眠 5 分钟。 这难道不是 65 分钟执行一次? 如果你是要从 crontab 任务写入的时候开始算 65 分钟执行,那么你就在 0 分的时候修改 crontab,这样每次执行都是 65 分钟后。 |
78 v4dc Dec 25, 2019 写一个每 13 个小时跑一次的 cron task,在这个脚本里每隔 65 分钟跑一次,一共跑 12 次 |
81 omph Dec 25, 2019 最好用 systemd,否则用 1 楼思路 [自更新 shell 脚本]( https://my.oschina.net/u/1044667/blog/1622308) |
82 krixaar Dec 25, 2019 @wmwmajie 第一次运行是第 60 分钟的时候,延迟 5 分钟,第 65 分钟执行,第二次运行是第 120 分钟的时候,延迟 5 分钟,第 125 分钟执行,125-65=60,间隔是 60 分钟而不是 65 分钟。 |
83 cattyhouse Dec 25, 2019 0 0 * * * command # 0 点 0 分执行第一次 5 1,12,23 * * * command # 1,12.23 点 5 分执行第二次 10 2,13 * * * command # 2,13 点 10 分执行第三次 15 3,14 * * * 20 4,15 * * * 25 5,16 * * * 30 6,17 * * * 35 7,18 * * * 40 8,19 * * * 45 9,20 * * * 50 10,21 * * * 55 11,22 * * * |
84 cattyhouse Dec 25, 2019 更正 0 0,12 * * * /path/to/command 5 1,13 * * * 10 2,14 * * * 15 3,15 * * * 20 4,16 * * * 25 5,17 * * * 30 6,18 * * * 35 7,19 * * * 40 8,20 * * * 45 9,21 * * * 50 10,22 * * * 55 11,23 * * * |
85 cattyhouse Dec 25, 2019 或者最简单就是 while true 大法 代码如下: #!/bin/bash while true ; do your code here # 呼叫 sleep 65m = 3900 秒 sleep 3900 done |
86 metamask Dec 25, 2019 |
87 tankren Dec 25, 2019 https://crontab.guru/ |