LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 790|回复: 4

每月月底自动执行任务,这个任务该怎么编辑呢?

[复制链接]
发表于 2010-11-30 08:42:45 | 显示全部楼层 |阅读模式
crontab的时间都是固定的,但是每月却有大有小,我想每月月底自动执行脚本,有什么办法么?谢谢!
发表于 2010-11-30 10:24:57 | 显示全部楼层
月底执行和月初(每月1号)的区别不是很重要的话,可以放到月初。或者用/etc/cron.monthly.
如果这个区别很重要,直接写一个每天都会执行的crontab,调用一个你自己的脚本,脚本里面判断是不是一个月的最后一天,如果是,继续,如果不是,直接退出。

判断是不是一个月最后一天的shell:
  1. tomorrow=$(date --date "now + 24 hours" +'%d')
  2. if [[ $tomorrow = "01" ]]; then
  3.     echo "today is the last day of month"
  4. else
  5.     echo "today is not the last day of month"
  6. fi
复制代码
这个逻辑很简单,主要是判断明天是不是1号,如果是,今天必然是这个月的最后一天。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-12-1 22:24:38 | 显示全部楼层
万分感谢,帮了我大忙了!
回复 支持 反对

使用道具 举报

发表于 2010-12-2 20:52:14 | 显示全部楼层
说一个比较变态的想法,关于是不是月底。

其实我们知道地球被人为划为了24个时区,那么,每个月的最后一天,在特定的时区的特定时间,对于另外一些时区就是下个月的第一天,所以只需要简单地调整下时区就可以达到楼主的目的……
回复 支持 反对

使用道具 举报

发表于 2010-12-3 16:33:56 | 显示全部楼层
Post by pingz;2121925
说一个比较变态的想法,关于是不是月底。

其实我们知道地球被人为划为了12个时区,那么,每个月的最后一天,在特定的时区的特定时间,对于另外一些时区就是下个月的第一天,所以只需要简单地调整下时区就可以达到楼主的目的……

网上也有人这样做的,只是我个人觉得这个思路不那么直接,”简单“地绕过弯子,设置一个不同时区,这样一转换,确定是不是最后一天,确实不简单。
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表