关于crontab分时日月周的一个小问题

回复 收藏
本帖最后由 xiaotuanyu120 于 2015-3-9 21:53 编辑

今天朋友跟我讨论了一个问题,crontab的语法是“分 时 日 月 周 command”,那我们如何实现在每个月的第一个周六来执行某个命令或脚本呢?

经过思考我个人想到一种解决方案
1、先做个每周六执行的计划;
2、计划里执行一个脚本,脚本的内容是判断data +%e的执行结果,如果小于7的话来执行你需要执行的命令或脚本。

每个月的第一个周六:
0 0 * * 6 运行你的脚本

脚本里内容是
=====================================================================
#!/bin/bash

t=$(date +%e)

if [ "$t" -le 7 ];
then
        你需要执行的命令;
fi
======================================================================

想到一种更简洁的
0 0 * * 6 [ "$\(date +\%e\)" -eq 9 ]&&要执行的命令

2015-03-09 14:44 举报
已邀请:
0

田埂上的梦

赞同来自:

那要换做每个月第二周周六呢
0

xiaotuanyu120

赞同来自:

本帖最后由 xiaotuanyu120 于 2015-3-9 17:23 编辑
田埂上的梦 发表于 2015-3-9 14:59
那要换做每个月第二周周六呢

如果是第二个周六的话,它的活动区间应该最早是7号,最晚是13号,所以我们只要把判断语句那边修改为
if [ "$t" -ge 8 ] && [ "$t" -le 13 ] 即可

0

田埂上的梦

赞同来自:

xiaotuanyu120 发表于 2015-3-9 17:11
如果是第二个周六的话,它的活动区间应该最早是7号,最晚是13号,所以我们只要把判断语句那边修改为
if  ...

如果不写脚本呢
0

xiaotuanyu120

赞同来自:


暂时没想到单独用crontab能解决的办法。
0

田埂上的梦

赞同来自:

xiaotuanyu120 发表于 2015-3-9 19:14
暂时没想到单独用crontab能解决的办法。

{:4_106:}行。 想到了发一下阿   师兄
0

wuhen

赞同来自:

我上网查了一些0 0 1-7 * 6 xxx是否可以
0

l5211314121

赞同来自:

1  1   1-7  *   6
0

xiaotuanyu120

赞同来自:

wuhen 发表于 2015-3-9 19:37
我上网查了一些0 0 1-7 * 6 xxx是否可以

这样难道不是1-7号和每个周六执行吗?
0

xiaotuanyu120

赞同来自:

l5211314121 发表于 2015-3-9 21:15
1  1   1-7  *   6

当日和周都不为*的时候,无论满足任何一个条件,即1-7和每个周六都会执行
0

xiaotuanyu120

赞同来自:

田埂上的梦 发表于 2015-3-9 19:22
行。 想到了发一下阿   师兄

想到一种更简洁的
0 0 * * 6 [ "$\(date +\%e\)" -eq 9 ]&&要执行的命令
0

田埂上的梦

赞同来自:

xiaotuanyu120 发表于 2015-3-9 21:52
想到一种更简洁的
0 0 * * 6 [ "$\(date +\%e\)" -eq 9 ]&&要执行的命令

6是代表星期6.     -eq 9   意思就是星期9?
0

l5211314121

赞同来自:

xiaotuanyu120 发表于 2015-3-9 21:44
当日和周都不为*的时候,无论满足任何一个条件,即1-7和每个周六都会执行

明白{:4_107:}
0

xiaotuanyu120

赞同来自:

田埂上的梦 发表于 2015-3-9 22:28
6是代表星期6.     -eq 9   意思就是星期9?

对,6是周六,但是-eq不是星期的意思,是equal 的缩写,意思是 等于9,当然我们这里不能用eq,应该用lt,意思是less than
0

田埂上的梦

赞同来自:

xiaotuanyu120 发表于 2015-3-10 10:34
对,6是周六,但是-eq不是星期的意思,是equal 的缩写,意思是 等于9,当然我们这里不能用eq,应该用lt, ...

懂了.  感谢师兄的耐心解答{:4_91:}
0

xiaotuanyu120

赞同来自:


开始上课了吗?有时间去我的博客看看呀,301ren.blog.51cto.com 应该和你们上课的速度是同步的
0

xiaotuanyu120

赞同来自:

田埂上的梦 发表于 2015-3-10 10:36
懂了.  感谢师兄的耐心解答

不客气,你们也就三个月的时间,肯定比我们更厉害了,多交流
0

田埂上的梦

赞同来自:

xiaotuanyu120 发表于 2015-3-10 10:38
不客气,你们也就三个月的时间,肯定比我们更厉害了,多交流

{:4_91:}还请师兄多在论坛照顾照顾我们六期学生
0

xiaotuanyu120

赞同来自:

田埂上的梦 发表于 2015-3-10 10:53
还请师兄多在论坛照顾照顾我们六期学生

呵呵,如果能力范围内的,义不容辞
0

田埂上的梦

赞同来自:

xiaotuanyu120 发表于 2015-3-10 12:06
呵呵,如果能力范围内的,义不容辞

{:4_91:}
0

gjc159357

赞同来自:

6 [ "$\(date +\%e\)" -eq 9 ]&&这句怎么理解的?   []里面内容是判断逻辑值吗? 然后根据逻辑值看是否接着执行后面的命令吗
0

l5211314121

赞同来自:

xiaotuanyu120 发表于 2015-3-10 10:37
开始上课了吗?有时间去我的博客看看呀,301ren.blog.51cto.com 应该和你们上课的速度是同步的

哈哈  开始了,你的博客好贴肯定多
0

xiaotuanyu120

赞同来自:

l5211314121 发表于 2015-3-17 13:12
哈哈  开始了,你的博客好贴肯定多

不敢讲好帖,只是把铭哥教的内容复习一遍。

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: