免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8977 | 回复: 9
打印 上一主题 下一主题

/etc/crontab 怎么设置每月最后一个周六任务 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-04 10:14 |只看该作者 |倒序浏览
/etc/crontab 怎么设置每月最后一个周五任务?
我需要在每月定时做备份,但是备份时间超过24小时,如果在上班时间做会不能使用系统。
但是crontan每月定时只能是每月的几号做?难道不能像windows下的做到每月最后一个周五晚上做吗

论坛徽章:
5
寅虎
日期:2015-01-20 09:16:52亥猪
日期:2015-01-21 14:43:44IT运维版块每日发帖之星
日期:2015-12-17 06:20:00每日论坛发贴之星
日期:2015-12-17 06:20:00每周论坛发贴之星
日期:2015-12-20 22:22:00
2 [报告]
发表于 2009-08-04 10:28 |只看该作者
給定周中的特定天

  另一個常見的需求是,僅在每月中的特定星期數運行。例如,可能希望在每個月的第一個星期一或星期五運行一個報告。為了完成此任務,可以使用與上面類似的過程。對於給定周中的任何天,它一定屬於以下日期範圍之一:
  第 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,命令將實際在第三個星期五執行。

论坛徽章:
34
亥猪
日期:2015-03-20 13:55:11戌狗
日期:2015-03-20 13:57:01酉鸡
日期:2015-03-20 14:03:56未羊
日期:2015-03-20 14:18:30子鼠
日期:2015-03-20 14:20:14丑牛
日期:2015-03-20 14:20:31辰龙
日期:2015-03-20 14:35:34巳蛇
日期:2015-03-20 14:35:56操作系统版块每日发帖之星
日期:2015-11-06 06:20:00操作系统版块每日发帖之星
日期:2015-11-08 06:20:00操作系统版块每日发帖之星
日期:2015-11-19 06:20:00黄金圣斗士
日期:2015-11-24 10:43:13
3 [报告]
发表于 2009-08-04 15:52 |只看该作者
嫌麻烦,30天执行一次得了。

论坛徽章:
0
4 [报告]
发表于 2009-08-04 16:16 |只看该作者
原帖由 劉五十三 於 2009-8-4 10:14 發表
/etc/crontab 怎麼設置每月最後一個週五任務?
我需要在每月定時做備份,但是備份時間超過24小時,如果在上班時間做會不能使用系統。
但是crontan每月定時只能是每月的幾號做?難道不能像windows下的做到每月 ...


多動動腦吧,若你需要格式太複雜,windows 還辦不大呢。


  1. 0 0 * * 6 [ $(date -d "+7 days" +%d) -gt $(date +%d ) ] && /path/your_program
复制代码

  1. $(date -d "+7 days" +%d)
复制代码


這是表示下週的日期,比方 10/15 的一星期後是 10/22,那內容就是 22

  1. $(date +%d )
复制代码


今天日期,今天是 10/15,那內容就是 15

[ 本帖最后由 kenduest 于 2009-8-4 16:23 编辑 ]

论坛徽章:
1
天秤座
日期:2013-10-23 13:20:42
5 [报告]
发表于 2009-08-04 22:53 |只看该作者
Su Mo Tu We Th Fr Sa
    1  2  3  4  5  6
7  8  9 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   
       1  2  3  4  5
6  7  8  9 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   
          1  2  3  4
5  6  7  8  9 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  
             1  2  3
4  5  6  7  8  9 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
                1  2
3  4  5  6  7  8  9
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
2  3  4  5  6  7  8
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        
1  2  3  4  5  6  7
8  9 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号

具体写法,我就不列那!思路已经给你拿

论坛徽章:
1
天秤座
日期:2013-10-23 13:20:42
6 [报告]
发表于 2009-08-05 19:27 |只看该作者
原帖由 kenduest 于 2009-8-4 16:16 发表


多動動腦吧,若你需要格式太複雜,windows 還辦不大呢。


0 0 * * 6 [ $(date -d "+7 days" +%d) -gt $(date +%d ) ] && /path/your_program


$(date -d "+7 days" +%d)

這是表示下週的日期,比 ...





相当不错

论坛徽章:
0
7 [报告]
发表于 2009-08-05 23:10 |只看该作者
0 0 * * 5 [ $(date -d "+7 days" +%d) -lt $(date +%d ) ] && /path/your_program?

论坛徽章:
0
8 [报告]
发表于 2009-08-06 15:58 |只看该作者
我也想过每周五运行脚本,然后脚本检测是不是最后一个周五,是的话就运行备份程序。看来crontab实现不了。多谢上面的兄弟帮忙。

论坛徽章:
0
9 [报告]
发表于 2009-08-06 16:58 |只看该作者
可以在自己的脚本里去实现,这样虽然有一引起麻烦但可以保证最后一个周六运行

论坛徽章:
0
10 [报告]
发表于 2009-08-07 15:45 |只看该作者
又学到东西了.










注册BVI公司
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP