Linux定时任务

  一、定时任务概念

  定时任务就是给系统定一个规则,让系统在指定的时间执行我们想让系统做的动作。这种服务在Windows叫做任务计划程序,打开控制面板,点开管理工具你就可以看到它。在Linux上它叫crond,可以使用yum安装它,使用/etc/init.d/crond start命令就可以让它运行起来,它提供了一个命令让我们可以编辑定时任务即crontab,这个命令实际上编辑的/var/spool/cron/目录下文件名与当前用户名对应的文件。

 

  二、crontab命令的使用规则

  命令格式:crontab  选项

  可选选项如下

  -e  编辑定时任务

  -l  查看定时任务

  -i  删除定时任务,删除前会提示确认

  -r  立即删除定时任务

  -u  user  指定用户,配合其他选项一起使用  

 

  三、添加定时任务

  1、定时任务的格式

  定时任务共有六列,各列代表的含义与取值范围如下:

  第一列:代表分钟,取值范围:0~59

  第二列:代表小时,取值范围:0~23

  第三列:代表日期,取值范围:1~31

  第四列:代表月份,取值范围:1~12

  第五列:代表星期,取值范围:0~7,0和7都代表星期日

  第六列:需要执行的命令行

 

  2、定时任务的特殊符号说明

  *  在前五列中使用,代表每分钟、每小时以此类推

  -  在前五列中使用,代表时间段,如星期一到星期五执行任务书写为1-5

  ,  在前五列中使用,代表分隔的时间段,如每天的3,4,5,17,18,19整点执行任务书写为3-4,17-19

  /n   在前两列中使用,代表每个n分钟或每隔n小时执行任务 

  

  3、定时任务使用要点

  1)每条定时任务要注释用途、设定人、设定日期

  2)定时任务指定小时的时候必须给出明确的分钟数,如果是整点执行就在分钟数上写上00

  3)日期和星期不要同时指定,避免发生冲突

  4)定时任务中执行任何命令都必须给出命令的绝对路径,如执行脚本要用/bin/sh代替sh

  5)每一条定时任务必须将输出信息重定向到一个指定设备或文件中避免系统发送临时邮件,如果输出结果不需要则按以下格式重定向:>/dev/null 2>&1

  6)定时任务需要以执行脚本代替执行命令以避免出现未知的问题

  7)定时任务执行的脚本需要放在统一的目录如/server/scripts目录下以规范路径

  8)定时任务只能识别少数环境变量,因此自定义的环境变量不仅要在/etc/profile文件中声明还需要在脚本中再次声明

  9)在定时任务中使用时间变量需要对%进行转义如\%,而如果写在脚本中再执行脚本则不需要转义

  10)执行tar命令时切换到目标目录的上一级目录再进行打包

  11)定时任务执行的脚本中使用的任何命令也必须给出绝对路径

 

  4、调试定时任务的方法

  1)增加执行任务的频率以调试任务,如每分钟或当前时间五分钟后执行
  2)调整系统时间以调试任务,此法不能用于生产环境,调整时保持与当前时间间隔五分钟左右
  3)通过将脚本中必要的输出结果重定向到日志文件以调试定时任务
  4)注意一些任务命令带来的问题,一个命令行不能写多个重定向输出、百分号要转义(脚本中不需要)
  5)注意环境变量的定义问题导致的定时任务故障,如Java的环境变量
  6)通过crond定时任务服务日志调试
  7)调试脚本用sh -x

  

posted @ 2018-03-13 10:45  魅力宁波  阅读(294)  评论(0)    收藏  举报