• Linux crontab命令


    crond 简介

    crond 是 Linux 中用来周期性的执行某种任务或等待处理某些事情的一个守护进程(后台程序运行不受终端控制的进程),和 windows 下的计划任务相似

    当安装完系统操作系统后,默认会安装此工具,并且会自动启动 crond 进程,crond 进程每分钟都会定期检查是否有要执行的任务,如果有要执行的任

    务,则自动执行该任务。

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

    系统任务调度:系统本身周期性所要执行的工作,比如:写缓存数据到硬盘、日志清理等等。

    /etc/ 目录下有一个 crontab 文件,这个就是系统任务调度的配置文件。

    如下所示:

    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    HOME=/
    
    # 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;

    第四个 HOME 变量指定了在执行命令或脚本时使用的主目录

    用户任务调度:用户定期要执行的工作,比如:用户数据备份、定时邮件提醒等等。用户可以通过 crontab 工具

    来定制自己的计划任务,所有用户自定义的 crond 任务都被保存在 /var/spool/cron 目录中,文件名与用户名一致。

    使用者权限文件

    /etc/cron.deny

    说明:该文件中所列用户不允许执行 crontab 命令。

    /var/spool/cron/

    说明:所有用户自定义的 crond 任务都被保存在 /var/spool/cron 目录中,文件名义用户名命名

    crontab 文件的含义

    用户所建立的 crontab 文件中,每一行都表示一项任务,每一行的每个字段代表一项设置,它的格式分为6个字段,前5段

    表示时间设置,第六段表示要执行的命令,格式如下:

    minute   hour   day   month   week   command

    其中:

    minute 表示分钟,取值范围:0~59之间的任意整数。

    hour 表示小时,取值范围:0~12之间的任意整数。

    day 表示天,取值范围:1~31 之间的任意整数。

    month 表示月,取值范围:1~12之间的任意整数。

    week 表示星期几,取值范围:0~7之间的任意整数,0或7表示星期日。

    在以字段中,还可以使用下面这些字符:

    * 星号,表示任意,代表所有可能的值,例如,month字段如果是星号,则表示在满足其他字段的制约条件后每月都执行该命令操作
    ,逗号分隔表示时刻,例如,在minute字段出现 1,2,5 表示在第1分钟、第2分钟、第5分钟
    - 中划线连接,表示时间段,例如,2-6表示2,3,4,5,6
    / 表示间隔,如果第一个域为 /2 表示每隔两分钟
    

      

    crond 服务

    安装 crontab:

    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(使用tab键切换确定或取消按钮)
    chkconfig --level 35 crond on
    

    crontab 命令详解

    1.命令格式

    crontab [-u user] file
    crontab [-u user] [-e | -l | -r]

    2.命令参数

    -u user 用来设定某个用户的crontab服务。比如:-u xiaoming 表示设定xiaoming用户的crontab服务,这个参数由root用户运行
    file 是命令文件的名字,表示将file的任务列表文件载入crontab,也就是用指定的命令文件去代替crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入上键入的命令,并将它们载入crontab
    -e 编辑某个用户的crontab文件内容。如果没有明确指定用户,则表示编辑当前用户的crontab文件内容
    -l 列出某个用户的crontab文件内容。如果没有明确指定用户,则表示列出当前用户的crontab文件内容
    -r 从 /var/spool/cron 目录删除某个用户的 crontab 文件。如果没有明确指定用户,则表示删除当前用户的crontab文件内容
    -i 在删除用户 crontab 文件内容时给出确认提示

    3.常用方法

    3.1 创建一个新的 crontab 文件

    创建一个名为 <user> cron 文件,其中 <user> 是用户名,例如:xiaoming 在该文件中加入如下内容。

    # (put your own initials here)echo the date to the console every
    # 15minutes between 6pm and 6am
    # 表示每天上午6点和下午6点,每隔15分钟输出当前系统时间 0,15,30,45 18-06 * * * /bin/echo 'date' > /dev/console

    保存并且退出,确保前面5个域用空格分隔。执行 crontab xiaoming 命令用指定的命令文件去代替crontab

    3.2 列出 crontab 文件

    [root@VM_81_181_centos ~]# crontab -l                                                                                                                                                                             
    # (put your own initials here)echo the date to the console every                                                                                                                                                  
    # 15minutes between 6pm and 6am                                                                                                                                                                                   
    0,15,30,45 06-18 * * * /bin/echo 'date' > /dev/console                                                                                                                                                            
    [root@VM_81_181_centos ~]#  

    另外为了防止误删 crontab 文件,我们可以在 $HOME 目录中对 crontab 文件做备份

    crontab -l > $HOME/mycron

    3.3 编辑 crontab 文件

    如果希望添加、删除或编辑 crontab 文件,可以使用 crontab -e 命令

    例如,加入下面这样一条:

    # DT:delete core files,at 3.30am on 1,7,14,21,26,26 days of each month
    30 3 1,7,14,21,26 * * /bin/find -name "core' -exec rm {} ;

    表示:每个月的第1、7、14、21、26天的上午3:30删除 core 文件

    最好在 crontab 文件的每一个条目之上加入一条注释,这样可以知道可以知道它的功能、运行时间、还能知道是哪一位用户的作业

    3.4 删除 crontab 文件

    crontab -r

    实际用例

    #Example 01 每1分钟执行一次command

    * * * * * command

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

    3,15 * * * * command

    #Example 03 在上午8点到11点的第3分钟和第15分钟执行

    3,15 8-11 * * * command

    # Example 04 每隔两天的上午8点到11点的第3和第15分钟执行

    3,15 8-11 /2 * * command

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

    3,15 8-11 * * 1 command

    #Example 06 每晚的21:30 重启smb

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

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

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

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

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

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

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

    #Exmaple 10 每周六晚上11:00重启smb

    0 23 * * 6 /etc/init.d/smb restart

    # Example 11 每一个小时重启smb

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

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

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

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

    0 11 4 * 1-3 /etc/init.d/smb restart
    

    #Example 14 一月一号的4点重启smb

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

    注意:新建的 cron job,不会马上执行至少要等2分钟才执行

               当 cron 突然失效时,可以尝试 /etc/init.d/crond restart 解决问题,或者查看日志看某个 job 有没有执行报错:tail -f /var/log/cron

     文章转载地址:http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html

  • 相关阅读:
    dapperHelper
    .NET Core Session的使用方法
    Wpf 关闭当前窗体 打开新窗体
    C#中Split分隔字符串的应用(C#、split、分隔、字符串)
    wpf日期控件
    SQLite数据库数据类型详解
    Asp.Net Core 2.2
    手写图片懒加载
    css动画常用属性总结
    css购物车(抛物线)运动
  • 原文地址:https://www.cnblogs.com/leeyongbard/p/10009747.html
Copyright © 2020-2023  润新知