你的位置:
问答吧
-> Linux
-> 问题详情
/etc/crontab 怎么设置每月最后一个周六任务
/etc/crontab 怎么设置每月最后一个周五任务?
我需要在每月定时做备份,但是备份时间超过24小时,如果在上班时间做会不能使用系统。
但是crontan每月定时只能是每月的几号做?难道不能像windows下的做到每月最后一个周五晚上做吗
作者: 刘五十三
发布时间: -08-04
給定周中的特定天
另一個常見的需求是,僅在每月中的特定星期數運行。例如,可能希望在每個月的第一個星期一或星期五運行一個報告。為了完成此任務,可以使用與上面類似的過程。對於給定周中的任何天,它一定屬於以下日期範圍之一:
第 1 周:第 1 天到第 7 天
第 2 周:第 8 天到第 14 天
第 3 周:第 15 天到第 21 天
第 4 周:第 22 天到 28 天
要確定當前日期是否在給定範圍內,例如是否在第四周範圍內,可以使用與以下所示類似的測試:
[ `date +%e` -gt 21 -a `date +%e` -lt 29 ]
%e 用於返回當天的號數,如果數字小於 10 則用一個空格(而不是零)作為其前綴,以確保對數字(而非字符串)進行比較。
現在可以將此與 crontab 定義一起使用,以嘗試每週星期五運行命令:
59 23 * * 5 [ `date +%e` -gt 21 -a `date +%e` -lt 29 ]
&& do-something
命令將在每週星期五運行,但由於測試將僅在每個月的第四周返回 True,命令將實際在第三個星期五執行。
作者: gamester88
发布时间: -08-04
嫌麻烦,30天执行一次得了。
作者: vermouth
发布时间: -08-04
QUOTE:
原帖由 劉五十三 於 -8-4 10:14 發表
/etc/crontab 怎麼設置每月最後一個週五任務?
我需要在每月定時做備份,但是備份時間超過24小時,如果在上班時間做會不能使用系統。
但是crontan每月定時只能是每月的幾號做?難道不能像windows下的做到每月 ...
多動動腦吧,若你需要格式太複雜,windows 還辦不大呢。
[Copy to clipboard] [ - ]CODE:
0 0 * * 6 [ $(date -d "+7 days" +%d) -gt $(date +%d ) ] && /path/your_program
[Copy to clipboard] [ - ]CODE:
$(date -d "+7 days" +%d)
這是表示下週的日期,比方 10/15 的一星期後是 10/22,那內容就是 22
[Copy to clipboard] [ - ]CODE:
$(date +%d )
今天日期,今天是 10/15,那內容就是 15
作者: kenduest
发布时间: -08-04
Su Mo Tu We Th Fr Sa
123456
789 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
26
Su Mo Tu We Th Fr Sa
12345
6789 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
25
Su Mo Tu We Th Fr Sa
1234
56789 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
31
Su Mo Tu We Th Fr Sa
123
456789 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
30
Su Mo Tu We Th Fr Sa
12
3456789
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
29
Su Mo Tu We Th Fr Sa
1
2345678
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
28
Su Mo Tu We Th Fr Sa
1234567
89 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
27
lz不要误解哦,看到了我上面列出的内容了嘛,是1号出现在周一至周五的可能性,那一个中最后一周的周五的日期应该是>=25的
crontab 中
* * * * 5 shell.script
在shell中先判断当前日期是不是>=25号
具体写法,我就不列那!思路已经给你拿
作者: jerryjzm
发布时间: -08-04
QUOTE:
原帖由 kenduest 于 -8-4 16:16 发表
多動動腦吧,若你需要格式太複雜,windows 還辦不大呢。
0 0 * * 6 [ $(date -d "+7 days" +%d) -gt $(date +%d ) ] && /path/your_program
$(date -d "+7 days" +%d)
這是表示下週的日期,比 ...
相当不错
作者: jerryjzm
发布时间: -08-05
0 0 * * 5 [ $(date -d "+7 days" +%d) -lt $(date +%d ) ] && /path/your_program?
作者: phoenixson
发布时间: -08-05
我也想过每周五运行脚本,然后脚本检测是不是最后一个周五,是的话就运行备份程序。看来crontab实现不了。多谢上面的兄弟帮忙。
作者: 刘五十三
发布时间: -08-06
可以在自己的脚本里去实现,这样虽然有一引起麻烦但可以保证最后一个周六运行
作者: ttblmtang123
发布时间: -08-06
又学到东西了.
注册BVI公司
作者: 11hy
发布时间: -08-07
如果觉得《crontab 每周五_/etc/crontab 怎么设置每月最后一个周六任务》对你有帮助,请点赞、收藏,并留下你的观点哦!