zoukankan      html  css  js  c++  java
  • Linux的crontab

    Linux的crontab

    配置文件

    在Centos系统中系统级别的crontab的配置文件在/etc/crontab中,用户级别的配置文件在 /var/spool/cron目录下,其文件名与用户名一致。

    • 查看系统级别配置文件可以看到如下的内容:

      [root@node ~]# cat /etc/crontab 
      SHELL=/bin/bash
      PATH=/sbin:/bin:/usr/sbin:/usr/bin
      MAILTO=root
      
      # 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
      
      

      前四行是用来配置crond任务运行的环境变量,

      • 第一行SHELL变量指定了系统要使用哪个shell,这里是bash;
      • 第二行PATH变量指定了系统执行命令的路径;
      • 第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户;
    • 查看root用户的配置文件,如果不存在可以新建,要保证用户名和文件名一致。用户的配置文件是不可以直接编辑的,需要使用crontab -e 进行编辑操作。

    crontab命令详解

    格式:

    crontab [-u user] file
    crontab [ -u user ] [ -i ] { -e | -l | -r }
    
    • -u user:用于设定某个用户的crontab服务;
    • file: file为命令文件名,表示将file作为crontab的任务列表文件并载入crontab;
    • -e:编辑某个用户的crontab文件内容,如不指定用户则表示当前用户;最常用的命令
    • -l:显示某个用户的crontab文件内容,如不指定用户则表示当前用户;最常用的命令
    • -r:从/var/spool/cron目录中删除某个用户的crontab文件。最常用的命令
    • -i:在删除用户的crontab文件时给确认提示。

    使用

    注意:新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。

    有些命令在命令行里执行很好,到了crontab里面不能正常执行,就是因为环境变量问题。

    *    *    *    *    *
    -    -    -    -    -
    |    |    |    |    |
    |    |    |    |    +----- 星期中星期几 (0 - 7) (星期天 为0)
    |    |    |    +---------- 月份 (1 - 12) 
    |    |    +--------------- 一个月中的第几天 (1 - 31)
    |    +-------------------- 小时 (0 - 23)
    +------------------------- 分钟 (0 - 59)
    

    "*"代表所有的取值范围内的数字,如月份字段为*,则表示1到12个月;

    "/"代表每一定时间间隔的意思,如分钟字段为*/10,表示每10分钟执行1次。

    "-"代表从某个区间范围,是闭区间。如“2-5”表示“2,3,4,5”,小时字段中0-23/2表示在0~23点范围内每2个小时执行一次。

    ","分散的数字(不一定连续),如1,2,3,4,7,9。

    注:由于各个地方每周第一天不一样,因此Sunday=0(第一天)或Sunday=7(最后1天)。

    示例

    每一分钟执行一次command(因cron默认每1分钟扫描一次,因此全为*即可)

    *    *    *    *    *  command
    

    每小时的第3和第15分钟执行command

    3,15   *    *    *    *  command
    

    每天上午8-11点的第3和15分钟执行command:

    3,15  8-11  *  *  *  command
    

    每隔2天的上午8-11点的第3和15分钟执行command:

    3,15  8-11  */2  *   *  command
    

    每个星期一的上午8点到11点的第3和第15分钟执行command

    3,15  8-11   *   *  1 command
    

    每晚的21:30重启smb

    30  21   *   *  *  /etc/init.d/smb restart
    

    每月1、10、22日的4 : 45重启smb

    45  4  1,10,22  *  *  /etc/init.d/smb restart
    

    每周六、周日的1 : 10重启smb

    10  1  *  *  6,0  /etc/init.d/smb restart
    

    每天18 : 00至23 : 00之间每隔30分钟重启smb

    0,30  18-23  *  *  *  /etc/init.d/smb restart
    

    每一小时重启smb

    *  */1  *  *  *  /etc/init.d/smb restart
    

    晚上11点到早上7点之间,每隔一小时重启smb

    *  23-7/1  *   *   *  /etc/init.d/smb restart
    

    每月的4号与每周一到周三的11点重启smb

    0  11  4  *  mon-wed  /etc/init.d/smb restart
    

    每小时执行/etc/cron.hourly目录内的脚本

    0  1   *   *   *     root run-parts /etc/cron.hourly
    

    注意!!!!

    1. crontab有2种编辑方式:直接编辑/etc/crontab文件与crontab –e

      • 其中/etc/crontab里的计划任务是系统中的计划任务
      • 用户的计划任务需要通过crontab –e来编辑
    2. 每次编辑完某个用户的cron设置后,cron自动在/var/spool/cron下生成一个与此用户同名的文件,此用户的cron信息都记录在这个文件中,这个文件是不可以直接编辑的,只可以用crontab -e 来编辑。

    3. crontab中的command尽量使用绝对路径,否则会经常因为路径错误导致任务无法执行。

      比如执行jar文件的时候,尽量将Java的目录使用完整的目录。要不就是用环境变量

       */1 * * * * /usr/local/java/jdk1.8/bin/java -jar /home/users/Demo.jar  
      
    4. 新创建的cron job不会马上执行,至少要等2分钟才能执行,可从起cron来立即执行。

    5. %在crontab文件中表示“换行”,因此假如脚本或命令含有%,需要使用\%来进行转义。

  • 相关阅读:
    『软件介绍』SQLServer2008 基本操作
    PCA的数学原理
    PCA的数学原理
    Oracle数据处理
    UVa 11995
    Unreal Engine 4 C++ 为编辑器中Actor创建自己定义图标
    codecombat之边远地区的森林1-11关及地牢38关代码分享
    初识ecside
    how tomcat works读书笔记 七 日志记录器
    HDU 1754(线段树区间最值)
  • 原文地址:https://www.cnblogs.com/cuianbing/p/14261478.html
Copyright © 2011-2022 走看看