• linux定时/计划任务


    计划任务,就是规划好的会在预计的时间去执行的任务。在linux系统中使用crond服务来完成这项工作,我们可以把cron设置为开机时自动启动。cron启动后,它会读取它的所有配置文件(全局性配置文件/etc/crontab,以及每个用户的计划任务配置文件),然后cron会根据命令和执行时间来按时来调用度工作任务。

    0、crond计划任务相关的命令、配置

    名称 类型 说明
    crontab 命令 crontab命令,可以创建、编辑、删除某个用户的定时任务
    /etc/crontab 文件 系统计划任务的全局配置文件
    /var/spool/cron/ 目录 存放以用户名命名的用户计划任务配置文件,通过crontab命令编辑
    /etc/cron.deny 文件 设置哪些用户不能使用crontab功能
    /etc/cron.hourly/ 目录 存放每个小时执行一次的脚本
    /etc/cron.daily/ 目录 存放每天执行一次的脚本
    /etc/cron.monthly/ 目录 存放每月执行一次的脚本
    /etc/cron.weekly/ 目录 存放每周执行一次的脚本
    /etc/cron.d/ 目录 系统自动定期需要执行的任务文件

    注意:
    1、通过crontab命令添加某个用户的计划任务后,会在/var/spool/cron目录下生成以该用户名为名称的文件,crontab命令编辑的就是该文件。
    2、crond服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用 crond服务做一些事情。用crontab命令配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。

    1、查看系统是否安装了crondtab

    rpm -qa|grep crontab

    2、查看是否启动了crond服务

    ps -ef|grep crondservice crond status

    3、如何启停crond服务

    • 启动
      /etc/init.d/crond startservice crond start
    • 停止
      /etc/init.d/crond stopservice crond stop
    • 重启
      /etc/init.d/crond restart
    • 重新载入配置文件(一般设置计划任务后执行,可以立即生效,不用等系统去读配置文件)
      /etc/init.d/crond reload

    4、设置crond服务开机自启动

    chkconfig crond on

    5、crontab命令使用说明

    usage:  crontab [-u user] file
            crontab [-u user] [ -e | -l | -r ]
                    (default operation is replace, per 1003.2)
            -e      (edit user's crontab)  编辑用户计划任务
            -l      (list user's crontab)  列出用户的计划任务的详细内容
            -r      (delete user's crontab)  删除用户的计划任务(指删除该用户的所有计划任务,强烈建议使用-ir)
            -i      (prompt before deleting user's crontab) 删除用户的计划任务前进行提示
            -s      (selinux context)
    

    示例1:编辑当前登录用户的计划任务
    crontab -e
    示例2:列出test用户的计划任务
    crontab -l test -e

    6、计划任务文件的格式

    *    *    *    *    *    command
    分    时     天    月    周    要执行的命令
    
    符号 说明
    表示分钟,可以是0~59之间的任意整数
    表示小时,取值范围[0~23]
    取值范围[1~31]
    取值范围[1~12]
    取值范围[0~7],0或7代表星期日
    command 要执行的命令,可以是系统命令,也可以是自己编写的脚本
    * 表示每的意思,例如分的位置为*,表示每分钟都要执行,表示0~59所有值
    分隔符,当对应域取多个值时使用,例如分钟域的“1,3”表示每小时的1分和3分钟执行计划任务
    - 表示时间范围,例如2-6表示"2,3,4,5,6"
    / 可以用来指定时间的间隔,例如“*/5”用在分钟域时表示每5分钟执行依次

    示例1:每天0点0分时,执行test脚本
    0 0 * * * test.sh
    示例2:每3小时执行一下test脚本
    * */3 * * * test.sh
    示例3:周一到周五的0点0分执行test脚本
    0 0 * * 1-5 test.sh

  • 相关阅读:
    # MYSQL 8.0 远程 clone
    MySQL-07-备份恢复
    迁移表空间
    2. MYSQL 数据库的介绍安装
    Percona Xrabackup 应用
    4.2.5 案例:通过mysqldump全备+binlog实现PIT数据恢复
    Mysql Innodb 表碎片整理
    关于_vsnprintf
    算法:华为面试代码题
    platform设备驱动框架
  • 原文地址:https://www.cnblogs.com/21summer/p/11010935.html
Copyright © 2020-2023  润新知