码迷,mamicode.com
首页 > 系统相关 > 详细

Linux系统定时任务

时间:2018-04-13 16:26:12      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:定时任务   crontab   

一、定时任务crond介绍


  1. crond是linux系统中用来定期执行命令或者指定程序任务的一种服务或者软件。

  2. crond默认情况下(每分钟),会检查系统中是否有需要执行的定时任务,如果有,就会根据事先定义好的规则来执行这个定时任务。就好比生活中的闹钟一样。但是注意的是crond对于秒级的任务(以秒为单位定时任务)是无能为力的,需要写守护进程(shell循环)脚本或者使用Quartz实现秒级任务。

  3. 在Linux中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron]。cron的配置文件称为“crontab”,是“cron table”的简写。cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。

  4. service crond start    //启动服务
    service crond stop     //关闭服务
    service crond restart  //重启服务
    service crond reload   //重新载入配置
    service crond status   //查看服务状态 

二、linux定时任务分类:

  1. 系统自身的定期执行的任务:如轮询系统日志、备份系统数据、清理系统缓存等,这些定时任务无需人为干预.系统任务调度的配置文件:/etc/crontab。

/etc/crontab配置基本格式 :    

SHELL=/bin/bash    #指定了系统要使用哪个shell    

PATH=/sbin:/bin:/usr/sbin:/usr/bin    #指定了系统执行 命令的路径,

MAILTO=root     #指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务 执行信息给用户,

HOME=/         #HOME变量指定了在执行命令或者脚本时使用的主目录

基本格式 : 
*  *  *  *  *  command 
分  时  日 月  周   命令 
第1列表示分钟0~59 每分钟用*

第2列表示小时0~23 每小时用*

第3列表示日期1~31 每天用*

第4列表示月份1~12 每月用*

第5列标识号星期0~6(0表示星期天) 

第6列要运行的命令 


/n    :每隔n单位时间(分、时、月、周)

17-19 :表示一段范围

,    :表示不同时间点


书写定时任务时要领:

1、增加定时任务调试频率。个人开发环境->办公室测试环境->IDC机房测试->IDC正式上线

2、通过脚本日志输出调试任务。

3、注意环境变量导致的定时任务故障(JAVA)。

4、通过定时任务服务日志调试任务。(var/log/cron)

5、系统任务里命令要用绝对路径。

6、脚本权限问题要加/bin/bash.

7、时间变量问题用\%转义,最好用脚本。

8、定时任务加注释

9、使用脚本程序代替命令行定时任务。

10、避免不必要的程序命令输出。



例如: 

30 21 * * * /usr/local/etc/rc.d/lighttpd restart 

上面的例子表示每晚的21:30重启apache。

 

    2、用户执行的任务:某个系统管理员或用户定期要执行的任务。用户定期要执行的工作,如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。用户任务调度的配置文件: /var/spool/cron/文件名(其文件名与用户名一致,一般一个用户最多只有一个crontab文件)。

三、crontab命令详解


  1. 命令功能:通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常设合周期性的日志分析或数据备份等工作。

  2. 命令格式:    crontab   [-u user]  [file]                    crontab [-u user] [ -e | -l | -r ]

  3. 命令参数:

    -u user:用来设定某个用户的crontab服务,例如,“-u Tom”表示设定Tom用户的crontab服务,此参数一般有root用户来运行。

    -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。

    -l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。

    -r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。

    -i:在删除用户的crontab文件时给确认提示。





Linux系统定时任务

标签:定时任务   crontab   

原文地址:http://blog.51cto.com/12674559/2103041

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!