|
MrUserDec 24, 2019
1
每 5 分种执行一次 A 脚本,在 A 脚本里判断是不是第 65N 次。
|
|
lihongjie0209Dec 24, 2019
2
每分钟执行一次, 判断和上次执行时间是否超过 65min(每次执行需要写入执行时间)
|
|
victorDec 24, 2019
3
*/5 */1 * * *
|
|
geekvcnDec 24, 2019
4
用 shell 比较方便,crontab 每小时会重置计时
|
|
yoshiyukiDec 24, 2019
6
没有特别好的写法,cron 本身不支持每 65 分钟这种语法
真要特别精准的话,需要一个个时间点写下来,00:00、01:05、etc 这样 |
|
7
还有个笨办法,把脚本复制 12 份,每一份每天执行两次,每份之间间隔 65 分钟
|
|
8
好吧 得到结论,crontab 真的挫
|
|
9
技术上的实现如果扭曲
最好先反思一下业务上逻辑是不是存在问题... 65 分钟这种奇怪的要求,往往不应该让系统去做,应该是开发那边做 |
|
sqdxxxDec 24, 2019
10
sleep(65*60)
|
|
zbl430Dec 24, 2019
12
http://qqe2.com/cron 这个可以测试,但是无法应该实现
|
|
maichaelDec 24, 2019
14
弄个每小时执行一次的,然后脚本里面先睡 5 分钟。
|
|
b821025551bDec 24, 2019
15
|
|
b821025551bDec 24, 2019
16
@maichael #14
那也还是每 60 分钟一次,而不是 65 |
|
caryqyDec 24, 2019
19
5 */1 * * *
a++ if a%2 == 1 then run ... fi |
|
caryqyDec 24, 2019
20
缺点 需要额外的一个文件保存计数值
|
|
caryqyDec 24, 2019
21
不对,我的方法错的
|
|
JJstyleDec 24, 2019 via iPhone
23
1/65 * * * *,难道不是这个吗?
|
|
momocraftDec 24, 2019
24
寫一個腳本生成 100 次間隔 65 分鐘的 crontab
然後用 cron 遞歸執行 |
|
300Dec 24, 2019 via Android
25
每次自动添加一个 65 分钟后的时间的任务?
|
|
lubanDec 24, 2019
26
执行间隔变短,额外的存储控制执行时间
|
|
kilen3aDec 24, 2019
27
crontab 建一个只执行一次的脚本,然后等脚本执行完之后计算 65 分钟后的时间,并修改成对应时间,done !
|
|
eason1874Dec 24, 2019
28
我实现过类似的需求,写一个 sh 文件,在 crontab 每分钟运行。
然后 sh 文件的代码就是:一个开始时间戳常量,运行的时候,先计算这个时间戳距离当前的分钟数,然后拿这个分钟数去除以 65,如果能被整除说明隔了 65 分钟,那就运行,不能整除就结束,等下一分钟。 |
|
dosmlpDec 24, 2019
29
直接的没有,楼里看很多人提出了许多间接的方法应该可以
|
|
30
?就没有一个人能想起 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
cron */n 指的是分钟数...能被 n 整除时执行,不是每 n 次执行。
为什么非要是 65 分钟,感觉代码不应该依赖这么奇怪的时间 interval。 |
|
DGideasDec 24, 2019 via Android
33
写个 shell 循环,然后每次循环先睡 65 分钟,如何?
|
|
superrichmanDec 24, 2019 via iPhone
34
crontab 不好做,建议用 python 的 apscheduler 可以随便定义 interval
|
|
lululauDec 24, 2019
35
30 楼正解,用 systemd/times 替代 cron
|
|
kn007Dec 24, 2019
36
systemd.timer
|
|
zealot0630Dec 24, 2019 via Android
38
9102 年了,用 systemd-timer 了,crond 过时了
|
|
hq136234303Dec 24, 2019
39
保持一个 date,每五分钟执行,然后当 65 分钟就执行代码清除,循环即可。
|
|
hq136234303Dec 24, 2019
40
保持一个 date,每五分钟执行,然后当 65 分钟就执行代码。清除时间,循环即可。
|
|
SenLiefDec 24, 2019
41
systemd.timer 搞定,很简单的。65min
|
|
holinhotDec 24, 2019
42
自己写个定时器
|
|
fxDec 24, 2019
43
自己写个定时器 + 1
|
|
sx90Dec 25, 2019 via Android
44
哦,就延时 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 楼大佬的方法,本人萌新,能闷一个是一个,错了别打脸 |
|
chtDec 25, 2019
45
个人用 shell + at,最初是应对一些签到网站需要 24 小时 01 分钟或 25 小时后才能重签的问题写的 🤣
|
|
dangyuluoDec 25, 2019
46
用一些 python 定时库来做,cron 在这种情况下有点不足
|
|
47
crontab 底层实现不也是每次判断一下?
写个 5 分钟的 shell 就行了,分钟数 65 求个余数。 |
|
48
定义多个 task
0 0 0 0 5 1 0 10 2 ... 13 小时一个周期 |
|
ashongDec 25, 2019 via iPhone
49
另一种就是 13 分钟执行一次,脚本检查计数,5 次执行一次真正的代码计数归零
|
|
trafficMGRDec 25, 2019 via Android
50
*/65 * * * *
没有了 |
|
guanhui07Dec 25, 2019
51
timer
|
|
2379920898Dec 25, 2019
52
这就比较 LOW 了
|
|
xyptyDec 25, 2019
53
@trafficMGR 最大 59 的
|
|
geyingDec 25, 2019
54
好奇什么场景
|
|
SjwNo1Dec 25, 2019
55
@trafficMGR interval 最大 60 建议换 timer
|
|
palmersDec 25, 2019
56
可不可以 13 分钟执行一次, 然后计数到 5
|
|
dog82Dec 25, 2019
57
定义 5 分钟一次的 crontab,mod 65 = 0 时执行即可
|
|
raysonluDec 25, 2019
58
我很好奇大家都没有每秒执行的场景吗?用 sleep 不就完事了么,一样的逻辑啊。
0 * * * * sleep 300; 要执行的命令 意思是每小时执行一次,执行前先睡个 300 秒 |
|
wmwmajieDec 25, 2019
59
你设置为 60 分钟一次,然后程序里面休眠 5 分钟不就行了。
|
|
zyq2280539Dec 25, 2019
61
这个简单啊,写个 shell 放到 crontab 里每天执行一次,然后 shell 里写上代码循环多少次,执行完毕就 sleep 65 分钟,差不多能基本满足需求吧
|
|
JaminTDec 25, 2019
62
* * * * * sleep 3900;command
|
|
oeagutDec 25, 2019 via iPhone
63
date 获取 1970 那个日期到现在的秒数,然后对 65*60 这个数取余,如果余数为 0,执行你的东西
然后把上面的写到 crond 里,每分钟执行一下,逻辑没错吧。 |
|
cnbattleDec 25, 2019
64
最后结论 代码层处理..
|
|
zhoudaiyuDec 25, 2019
66
sleep 大法好
|
|
FelldeadbirdDec 25, 2019
67
cron 每分钟执行,然后业务逻辑进行时间判断。 睡眠固然是好,但要是中途因为突发内存占用问题,进程被清空了,不就凉凉
|
|
ShundLDec 25, 2019
68
@cuixiao603 #62 你这个不是成了每分钟执行了?
|
|
tinybaby365Dec 25, 2019 via iPhone
69
at 命令了解一下
|
|
ShundLDec 25, 2019
71
@cuixiao603 #70 但 cron 每分钟执行,也就每分钟都创建一个 sleep 65 分钟的任务,每次任务的最终执行时间应该只相差 1 秒吧?
|
|
ryanlidDec 25, 2019
72
@cuixiao603 #70 细品一下,从第 65 分钟开始,就变成每分钟执行了
|
|
dierDec 25, 2019
73
at 命令了解一下
|
|
InternetExplorerDec 25, 2019 via Android
74
systemd.timer 了解一下,现在的系统应该都是 systemd 的了
|
|
james122333Dec 25, 2019
75
shell 强多了
被低估的工具 主要还是太多人写太差了 |
|
james122333Dec 25, 2019
76
crontab 的功能完全可以用 shell 实现
|
|
wmwmajieDec 25, 2019
77
@shengchao 你的描述是 65 分钟执行一次。
那么我在 crontab 里面加入一个 60 分钟执行一次的任务,然后在任务的代码里面先休眠 5 分钟。 这难道不是 65 分钟执行一次? 如果你是要从 crontab 任务写入的时候开始算 65 分钟执行,那么你就在 0 分的时候修改 crontab,这样每次执行都是 65 分钟后。 |
|
v4dcDec 25, 2019
78
写一个每 13 个小时跑一次的 cron task,在这个脚本里每隔 65 分钟跑一次,一共跑 12 次
|
|
omphDec 25, 2019
81
最好用 systemd,否则用 1 楼思路
[自更新 shell 脚本]( https://my.oschina.net/u/1044667/blog/1622308) |
|
krixaarDec 25, 2019
82
@wmwmajie 第一次运行是第 60 分钟的时候,延迟 5 分钟,第 65 分钟执行,第二次运行是第 120 分钟的时候,延迟 5 分钟,第 125 分钟执行,125-65=60,间隔是 60 分钟而不是 65 分钟。
|
|
cattyhouseDec 25, 2019
83
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 * * * |
|
cattyhouseDec 25, 2019
84
更正
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 * * * |
|
cattyhouseDec 25, 2019
85
或者最简单就是 while true 大法 代码如下:
#!/bin/bash while true ; do your code here # 呼叫 sleep 65m = 3900 秒 sleep 3900 done |
|
metamaskDec 25, 2019
86
|
|
tankrenDec 25, 2019
87
https://crontab.guru/
|