本帖最后由 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 ]&&要执行的命令
今天朋友跟我讨论了一个问题,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 ]&&要执行的命令
0
本帖最后由 xiaotuanyu120 于 2015-3-9 17:23 编辑
如果是第二个周六的话,它的活动区间应该最早是7号,最晚是13号,所以我们只要把判断语句那边修改为
if [ "$t" -ge 8 ] && [ "$t" -le 13 ] 即可
田埂上的梦 发表于 2015-3-9 14:59
那要换做每个月第二周周六呢
如果是第二个周六的话,它的活动区间应该最早是7号,最晚是13号,所以我们只要把判断语句那边修改为
if [ "$t" -ge 8 ] && [ "$t" -le 13 ] 即可
0
6是代表星期6. -eq 9 意思就是星期9?
xiaotuanyu120 发表于 2015-3-9 21:52
想到一种更简洁的
0 0 * * 6 [ "$\(date +\%e\)" -eq 9 ]&&要执行的命令
6是代表星期6. -eq 9 意思就是星期9?
0
对,6是周六,但是-eq不是星期的意思,是equal 的缩写,意思是 等于9,当然我们这里不能用eq,应该用lt,意思是less than
田埂上的梦 发表于 2015-3-9 22:28
6是代表星期6. -eq 9 意思就是星期9?
对,6是周六,但是-eq不是星期的意思,是equal 的缩写,意思是 等于9,当然我们这里不能用eq,应该用lt,意思是less than
0
懂了. 感谢师兄的耐心解答{:4_91:}
xiaotuanyu120 发表于 2015-3-10 10:34
对,6是周六,但是-eq不是星期的意思,是equal 的缩写,意思是 等于9,当然我们这里不能用eq,应该用lt, ...
懂了. 感谢师兄的耐心解答{:4_91:}
0
哈哈 开始了,你的博客好贴肯定多
xiaotuanyu120 发表于 2015-3-10 10:37
开始上课了吗?有时间去我的博客看看呀,301ren.blog.51cto.com 应该和你们上课的速度是同步的
哈哈 开始了,你的博客好贴肯定多
编辑回复