创建的第一个cron job

背景:
我们的业务是这样的。上游系统会生成文件,然后把这些文件打成zip,archrive到我们的一个ftp服务器上,然后我们的系统就会每天定时的run一个job,去消费这个文件,最后把处理完的数据直接insert到我们的db里。
但是有一个在开发环境上,我们系统的job,下线了,但是我们的作为开发,又很依赖每天的数据,然后我们就只能去手工的wget这个文件,然后解压,再删除zip文件。再喂给我们的系统。 每天自己去跑一遍真傻。为什么不写一个定时任务,每天定时跑尼。 这样就把自己解放出来了。

方案:
之前就知道cronjob可以定时跑任务,而且自己去改过前人的一些脚本。但是从头开始写来满足自己的需求还是第一次。

首先就是要知道cron的表达式,这个网上一搜一大堆。
随便在网上找了一个:
引用


1 2 3 4 5 /root/backup.sh


Where,

    1: Minute (0-59)
    2: Hours (0-23)
    3: Day (0-31)
    4: Month (0-12 [12 == December])
    5: Day of the week(0-7 [7 or 0 == sunday])
    /path/to/command - Script or command name to schedule

Easy to remember format:

* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)


很明显前面5 位 是日期时间的一些设置,后面就是要执行的具体的command line或者是shell script。

对cron表达式有一个基本的了解之后,然后就是根据自己的需求来写了。
需求:
我要在工作日,每天早上6点30的时候,去拿这些数据。
30 6 * * 1-5 sh /server/fcm/tools/loadEodData.sh



很明显我是想在6:30的时候去跑一个shell,让shell来帮我做取数据和unzip等等的人工操作。

那么我要接下来我就要写我的sh了。

DATE=$(date -d today +"%Y-%m-%d")
##DATE=$(date -d "2015-11-10" +"%Y-%m-%d")
echo $DATE
PATH="http://web01.eexchange.com:9090/logs/archive/CC_Eod_US_$DATE.zip"
cd /server/rbseod/us
/usr/bin/wget $PATH
echo $PATH
/usr/bin/unzip CC_Eod_US_$DATE.zip
/bin/rm -rf CC_Eod_US_$DATE.zip
PATH="http://web01.eexchange.com:9090/logs/archive/CC_Eod_UK_$DATE.zip"
cd /server/rbseod/uk
/usr/bin/wget $PATH
echo $PATH
/usr/bin/unzip CC_Eod_UK_$DATE.zip
/bin/rm -rf CC_Eod_UK_$DATE.zip
echo "Data Retrive Success at $DATE." >>/server/fcm/logs/EODDataRetrive.log



当初取date很久没有取出来,后来用了两遍的$符号,终于拿到了正确的日期。
----EOF----

猜你喜欢

转载自xfxlch.iteye.com/blog/2256286