linux crond 定时任务

来源:互联网 发布:nginx sticky 编辑:程序博客网 时间:2024/05/01 20:41

最近要做一个订单自动过期的功能,服务器是centos6,有两个选择,一个是系统的crond一个是mysql 的 event(时间触发器),不过由于业务的复杂程度,所以选择了crond,有些同学可能搞不明白crond和crondtab有啥关联,区别如下

crond的概念和crontab是不可分割的。crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语chronos(χρόνος),原意是时间。而crond正是它的守护进程。

crond的其他命令不做过多介绍,只介绍用到的命令

首先查看crond服务的状态:

/sbin/service crond status 

如果启动了就用停止服务:

/sbin/service crond stop

然后就写定时任务,在/ect下面的crondtab文件里面,先打开看一下

vim /etc/crontab

里面会写有规则,还是比较好理解的:

# For details see man 4 crontabs# Example of job definition:# .---------------- minute (0 - 59)# |  .------------- hour (0 - 23)# |  |  .---------- day of month (1 - 31)# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# |  |  |  |  |# *  *  *  *  * user-name command to be executed


翻译过来就是:

*  *  *  *  *  command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

注意:日和周不能同时使用
举几个常见的栗子:

30 20 * * * /sbin/service httpd restart 
表示每天晚上的9点30重启一次apache服务器

* 23-7/1 * * * /sbin/service httpd restart 
表示每天23点到7点,每隔一小时就重启了apache服务器
0 0 1,15 * * fsck /home
表示每月1号和15号检查/home 磁盘
30 * * * * /home/bruce/backup
表示每小时的第30分执行/home/bruce/backup这个文件
30 6 */10 * * ls
表示每隔10天的6:30执行一次ls命令

*/1 * * * * ls
代表每分钟执行一次ls命令
0 0 31 * * curl http://www.baidu.com
表示每月的31日0点0分访问一次百度
然后,把我们改写的定时命令写好了之后(注意权限),保存,打开crond服务:

/sbin/service crond start
或者

/sbin/service crond restart

然后在查看执行的记录,crontab的日志位置一般位于/var/log/cron,利用下面的语句即可查看日志:

tail -f /var/log/cron




0 0
原创粉丝点击