Linux crontab 命令——Linux系统定时任务配置

Linux crontab 命令

  • 介绍
    crontab命令用于设置周期性被执行的指令,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
    Linux下的任务调度分为两类,系统任务调度(配置文件为:/etc/crontab)和用户任务调度,此处主要介绍用户任务调度。

  • 检查cron服务

    • 检查crontab工具是否安装 : crontab -l
    • 检查crond服务是否启动 : service crond status
  • 安装cron

    • yum install vixie-cron
    • yum install crontabs
  • 服务说明

    • 启动服务:/sbin/service crond start
    • 关闭服务:/sbin/service crond stop
    • 重启服务:/sbin/service crond restart
    • 重新载入配置:/sbin/service crond reload
    • 查看crontab服务状态:service crond status
    • 手动启动crontab服务:service crond start
    • 查看crontab服务是否已设置为开机启动,执行命令:ntsysv
    • 加入开机自动启动:chkconfig –level 35 crond on
  • 相关文件介绍

    • /var/spool/cron/{userName} : 代表用户crontab文件
    • /etc/crontab : 代表系统crontab文件
    • /var/log/cron : 保存cron的任务执行记录
    • /var/spool/mail/{userName} : 记录用户邮件日志(定时任务执行后会发送邮件给配置的用户)
  • crontab指令语法介绍(主要用于操作用户crontab文件,位于:/var/spool/cron目录下,文件名与用户名一样,执行-e时自动创建,执行-r时,自动删除该文件)

    • crontab [-u user] file (以文件方式提交定时任务)
      • -u user:用来设定某个用户的crontab服务,例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。
      • file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
    • crontab [-u user] [ -e | -l | -r ]
      • -e (edit user’s crontab),编辑用户crontab文件
      • -l (list user’s crontab),列出用户crontab文件中的cronjob(要执行的定时任务)
      • -r (delete user’s crontab),删除用户crontab文件(删除定时任务)
      • -i (prompt before deleting user’s crontab),删除用户crontab前给与相应提示
  • crontab 文件内容格式介绍(配置定时任务)
    当用户执行crontab -e 时,将编辑用户crontab文件,文件每一行内容代表一个定时任务,他们都有统一的格式:

    • * * * * * comand(*以空格或tab隔开)
      • 第一个* : 分钟(0–59)

      • 第二个* : 小时(0–23)

      • 第三个* : 日期(0–31)

      • 第四个* : 月份(1–12)

      • 第五个* : 星期0–7(0或者7表示星期天)

      • comand : 要执行的操作

      • *    *    *    *    *
        -    -    -    -    -
        |    |    |    |    |
        |    |    |    |    +----- 星期中星期几 (0 - 6) (星期天 为0)
        |    |    |    +---------- 月份 (1 - 12)
        |    |    +--------------- 一个月中的第几天 (1 - 31)
        |    +-------------------- 小时 (0 - 23)
        +------------------------- 分钟 (0 - 59)
        
      • 特殊字符:

        • 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
        • 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
        • 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
        • 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
    • 举例:
      • 每晚21:30重启apache: 30 21 * * * service httpd restart
      • 每月1、10、22日的4:45重启apache : 45 4 1,10,22 * * service httpd restart
      • 每月1到10日的4:45重启apache : 45 4 1-10 * * service httpd restart
      • 每隔两分钟重启apache :*/2 * * * * service httpd restart 或者 1-59/2 * * * * service httpd restart
      • 每晚11点到早上7点间,每隔1小时重启apache : 0 23-7/1 * * * service httpd restart
      • 每晚18:00至23:00,每隔30分钟重启apache : 0,30 18-23 * * * service httpd restart0-59/30 18-23 * * * service httpd restart
      • 使用者也可以将所有的设定先存放在文件中,用 crontab file 的方式来设定执行时间。
    • 在线计算工具
  • 注意事项:

    • 当任务在你所指定的时间执行后,系统会寄一封信给你,显示该任务执行的内容,若是你不希望收到这样的信,请在每一行空一格之后加上 > /dev/null 2>&1 即可。如20 03 ** * . /etc/profile;/bin/sh /var/www/runoob/test.sh > /dev/null 2>&1
    • %在crontab中被认为是newline,要用\来escape才行。比如crontab执行行中,如果有"date +%Y%m%d",必须替换为:"date +\%Y\%m\%d"
    • 通过crontab 文件名 方式提交任务时,该文件的一个副本将被放在/var/spool/cron目录中,文件名就是用户名
    • 当设置完用的的定时任务后建议执行:crontab -l > 文件名,将用户的crontab进行备份,防止意外执行crontab -r 删除掉用户的crontab后可通过备份文件恢复用户的定时任务(执行:crontab 文件名),或者一开始便通过文件的方式提交定时任务。
    • 新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。
  • 小结 :

    • * :表示任何时候匹配
    • 可以用A,B,C表示A或者B或者C时执行命令
    • 可以用A-B表示A到B之间时执行命令
    • 可以用/A表示每A分钟(小时等)执行一次命令
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值