目录

crond

概述

运行linux后,开机自启动crond任务,系统会每分钟检查是否有要执行的任务工作(循环检测)默认系统中可以登陆的用户,都可以使用crontab定义计划任务。不过,可以通过/etc/cron.allow文件限制权限。

crontab 需要启动一个服务crond才行,crond服务通过crontab命令实现

crontab支持两种状态:

  • 直接编写计划任务;
  • 使用指向目录或者shell脚本的方式,放在目录里面的可执行文件都会定时执行,定时目录可在/etc/crontab中设定。

crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

Linux下的任务调度分为两类,系统任务调度和用户任务调度。

系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。

命令说明

基本语法

用户任务调度,在当前用户下操作任务调度

crontab [选项]

常用选项

  • -e 编辑crontab定时任务
  • -l 查询crontab任务
  • -r 删除当前用户所有的crontab任务,终止任务调度

快速入门

设置系统任务调度文件:/etc/crontab

设置个人任务调度。执行crontab –e命令。

接着输入任务到调度文件 如:*/1 * * * * ls –l /etc/ > /tmp/to.txt

意思说每小时的每分钟执行ls –l /etc/ > /tmp/to.txt命令

参数细节说明

5个占位符的说明

https://gitee.com/lienhui68/picStore/raw/master/null/20201007162745.png

特殊符号的说明

https://gitee.com/lienhui68/picStore/raw/master/null/20201007162814.png

特定时间执行任务案例

https://gitee.com/lienhui68/picStore/raw/master/null/20201007162835.png

应用案例

案例1:每隔1分钟,就将当前的日期信息,追加到 /tmp/com.eh/mydate.txt 文件中

  1. 编写可执行文件mydate.sh

    1
    2
    3
    4
    5
    6
    7
    
    # 查看是否有定时命令
    $ crontab -l
    crontab: no crontab for david
    # 编写可执行文件
    # david @ Davids-Macbook-Pro in /tmp/com.eh [16:42:01] C:1
    $ vim mydate.sh
    cal >> /tmp/com.eh/mydate.txt
    
  2. 赋予当前用户下可执行权限

    1
    2
    3
    4
    5
    
    $ ll mydate.sh
    -rw-r--r--  1 david  wheel    30B 10  7 16:41 mydate.sh
    $ chmod 744 mydate.sh
    $ ll mydate.sh
    -rwxr--r--  1 david  wheel    30B 10  7 16:41 mydate.sh
    
  3. 编写chrontab

    1
    2
    3
    4
    5
    6
    7
    
    # 编写定时命令
    $ crontab -e
    */1 * * * * /tmp/com.eh/mydate.sh
       
    # 查看定时命令
    $ crontab -l
    */1 * * * * /tmp/com.eh/mydate.sh
    
  4. 查看结果

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    
    $ cat mydate.txt
        October 2020
    Su Mo Tu We Th Fr Sa
                 1  2  3
     4  5  6  7  8  9 10
    11 12 13 14 15 16 17
    18 19 20 21 22 23 24
    25 26 27 28 29 30 31
       
        October 2020
    Su Mo Tu We Th Fr Sa
                 1  2  3
     4  5  6  7  8  9 10
    11 12 13 14 15 16 17
    18 19 20 21 22 23 24
    25 26 27 28 29 30 31
    
  5. 结束任务

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    $ crontab -l
    */1 * * * * /tmp/com.eh/mydate.sh
       
    # david @ Davids-Macbook-Pro in /tmp/com.eh [16:50:33]
    $ crontab -r
       
    # david @ Davids-Macbook-Pro in /tmp/com.eh [16:50:38]
    $ crontab -l
    crontab: no crontab for david
    

案例2:每隔1分钟, 将当前日期和日历都追加到 /home/mycal 文件中

案例3: 每天凌晨2:00 将mysql数据库 testdb ,备份到文件中。