• Crontab


    一、定义

    CRONTAB是一个用于设置周期性执行任务的工具

    优势:兼容几乎所有Linux版本

    二、远程终端工具推荐

    1、Git Bash(Windows)

    • 优点:模拟Linux命令行、自带强大的命令库

    2、Terminal(Linux,MacOS)

    • 优点:系统原生、操作简单、功能库强大

    三、crontab安装

    1、安装crond服务和crontab工具(CentOS7)

    yum clean all
    yum update
    yum install -y cronie crontabs
    

    四、验证CROND服务

    1、验证crond服务和crontab工具(CentOS7)

    • 检查crond服务是否安装及启动

      # && 判断左侧执行成功,才执行右侧
      # systemctl status crond:检查crond当前服务是否安装在当前系统服务中
      # 返回:inactive(未启动)与active(running)(已启动) 两种状态
      yum list cronie && systemctl status crond
      
    • 检查crond工具是否安装

      # yum list crontabs:检查crontabs工具是否已经安装到yum的安装包列表当中
      # which crontab:检查crontabs工具安装在系统的哪个目录中
      # crontab -l:返回当前crontabs的任务列表
      yum list crontabs && which crontab && crontab -l
      

    五、CRONTAB架构

    # 1、登录主机
    
    # 2、登录crontab表单
    crontab -e
    
    # 3、输入
    # * * * * *:分 时 日 月 周
    # my command:要执行的命令或者脚本
    * * * * * my command
    # 保存并退出
    :wq
    
    # 4、返回crontabs的任务列表
    crontab -l
    
    # 5、重启守护进程
    systemctl restart crond
    
    # 6、查看执行状态
    systemctl status crond
    

    六、CRONTAB文件格式

    1、格式

    * * * * * my command
    
    占位符 含义 范围
    第一个占位符* 0~59
    第二个占位符* 0~23
    第三个占位符* 1~31
    第四个占位符* 1~12
    第五个占位符* 0~6(0代表星期日,1-6代表星期一至星期六)
    my command 命令或脚本

    2、特殊符号代表某一个时间的特定含义

    特殊符号 含义
    * 取值范围内的数字,通常代表对应时间区间内所涵盖的所有数字
    / 每,通常与*组合.例如:每多少分钟/小时
    - 到。2-10(分占位符):2到10分钟
    , 分开几个离散的数字。2,10(分占位符):第2分钟和第10分钟

    注:占位符和命令要有空格隔开。每行都是一个表单任务。设置后需重启守护进程

    3、示例

    # 每分钟打印一行shell输出并写入文件
    * * * * * echo -e "Hello" > /root/test.out
    

    七、CRONTAB配置文件

    1、系统配置文件

    vim /etc/crontab
    

    2、系统用户crontab配置文件保存目录

    crontab -e
    
    # 保存目录:/var/spool/cron/
    # 如果是root用户,实际编辑的是:/var/spool/cron/root
    # 如果是其他用户(例:user01),实际编辑的是:/var/spool/cron/user01
    

    八、CRONTAB环境变量

    1、添加PATH到/etc/crontab

    # 例如添加java环境变量
    vim /etc/crontab
    
    # 追加PATH
    PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/jdk1.8.0_111/bin
    

    2、在执行具体任务前引入系统/用户环境变量(推荐)

    # 每天2:30
    # source /etc/profile:手动添加一个系统级别的环境变量,给当前用户使用。以便给sh命令使用
    30 2 * * * source /etc/profile;sh /root/test.sh
    # 添加一个用户级别环境变量
    30 2 * * * source ~/.bash_profile;sh /root/test.sh
    
    # 重启,使crond任务生效
    systemctl restart crond
    

    注:要在/etc/profile和~/.bash_profile配置要用到的环境变量

    九、CRONTAB命令行

    1、编辑并保存当前用户的计划任务

    crontab -e
    systemctl restart crond
    

    2、查看当前用户(root)保存的计划任务

    crontab -l
    cat /var/spool/cron/root
    

    十、CRONTAB日志

    1、Cron日志保存在系统目录/var/log/cron

    # 查看任务记录
    tail -n 2 /var/log/cron
    

    输出

    Mar 25 18:53:01 crontab CROND[8900]: (root) CMD (source /etc/profile;sh /root/test.sh)
    
    # Mar 25 18:53:01:时间
    # CROND[8900]:守护进程执行的第8900条任务
    # (root):用户
    # CMD ():crond的命令
    

    十一、CRONTAB实战

    1、清理系统日志

    1.1、命令清除

    # 1、进入存放系统日志的目录
    cd /var/log
    
    # 2、列出所有日志文件的大小
    du -sh *
    
    # 3、打开任务表单
    crontab -e
    
    # 添加记录
    # 每日1点
    # messages系统的主要日志
    # cat /dev/null 空文件 放到 /var/log/messages,达到清空messages的目的
    * 1 * * * cat /dev/null > /var/log/messages
    :wq
    
    # 4、查看任务表单
    crontab -l
    
    # 5、使任务生效
    systemctl restart crond
    

    1.2、脚本清除

    # 创建脚本
    vim /root/log_clean.sh
    
    #!/bin/sh
    
    cat /dev/null > /var/log/messages
    cat /dev/null > /var/log/secure
    
    :wq
    
    # 添加任务
    * 1 * * * sh /root/log_clean.sh
    

    2、备份源代码(Source Code)

    2.1、准备

    /home/backup : 备份存放的目录
    /home/script : 执行备份脚本存放的目录
    /home/www : 源代码存放的目录
    

    2.2、创建脚本文件

    vim /home/scrip/www_backup.sh
    
    #!/bin/sh
    
    basedir=/home/backup
    
    www_src=$basedir/www_src/$(date +%F_%H%M)
    
    [ ! -d "$www_src" ] && mkdir -p $www_src
    
    cd /home
    tar -jpcf $www_src/www.tar.bz2 www
    
    crontab -e
    
    * * * * * sh /home/scrip/www_backup.sh
    :wq
    
    systemctl restart crond
    

    十二、CRONTAB在iptables上的应用

    时时监控网络状态,并将blacklist的IP地址添加iptables链中,并将这些IP加入黑名单中,禁止访问主机。

    1、关闭firewalld

    # 查看防火墙状态
    systemctl status firewalld
    # 禁用该服务
    systemctl disable firewalld
    # 关闭该服务
    systemctl stop firewalld
    

    2、安装iptables-services

    # 安装
    yum install iptables-services
    # 确认
    y
    # 开启服务
    systemctl enable iptables
    # 启动服务
    systemctl start iptables
    # 验证
    iptables -V
    

    3、编写脚本

    cd /data/script
    vim /data/script/firewall.sh
    
    #!/bin/sh
    
    # 清空iptables的所有目录
    iptables -F
    
    list=/data/script/blacklist.txt
    
    for line in `cat $list`;do
      iptables -I INPUT -s$line -j DROP
      echo "$line is dropped into blacklist"
    done
    
    crontab -e
    
    * * * * * source /etc/profile;sh /data/script/firewall.sh
    :wq
    
    systemctl restart crond
    
    iptables -nvl
    

    十三、CRONTAB在Jenkins拓展

    1、安装Jenkins

    # 安装jenkins
    yum install jenkins
    # 确认
    y
    # 查看java的安装路径
    which java
    # 查看java版本
    java -version
    # 编辑jenkins的配置文件
    vim /etc/init.d/jenkins
    
    # 找到candidates 添加 当前机器的java所在路径
    
    # 启动服务
    systemctl start jenkins
    
    # 查看jenkins服务是否正常启动 并查看jenkins是否打开8080端口监听服务
    lsof -i:8080
    

    2、WEB配置jenkins

    • 主机IP:8080:登录jenkins配置界面
    • 安装推荐插件
    • 创建管理员用户
    • 开始使用Jenkins
    • 创建一个新任务
    • 输入名称 并 点击“构建一个自由风格的软件项目”
    • 构造触发器下 ==> 勾选“Build periodically”
    • 日程表输入表达式(例如:* * * * *)
    • 构建下 ==> 增加构建步骤 ==> 选择“Execute shell” ==> command输入 echo "Hello"
    • 保存

    十四、常用的CRON(来自网络)

    #1、在 12:01 a.m 运行,即每天凌晨过一分钟。这是一个恰当的进行备份的时间,因为此时系统负载不大。
    1 0 * * * /root/bin/backup.sh
    
    # 2、每个工作日(Mon – Fri) 11:59 p.m 都进行备份作业。
    59 11 * * 1,2,3,4,5 /root/bin/backup.sh
    # 下面例子与上面的例子效果一样:
    59 11 * * 1-5 /root/bin/backup.sh
    
    # 3、每5分钟运行一次命令
    */5 * * * * /root/bin/check-status.sh
    
    # 4、每个月的第一天 1:10 p.m 运行
    10 13 1 * * /root/bin/full-backup.sh
    
    #5、每个工作日 11 p.m 运行。
    0 23 * * 1-5 /root/bin/incremental-backup.sh
    

    十五、ubuntu下使用

    # 安装(一般情况下ubuntu自带cron服务)
    apt-get install cron
    # 启动
    service cron start
    # 重启
    service cron restart
    # 停止
    service cron stop
    # 检查状态
    service cron status
    # 查询cron可用的命令
    service cron
    # 检查Cronta工具是否安装
    crontab -l
    
    # 需要注意的是第一次使用crontab需要选择编辑器
    # 选择的是3 vim编辑器
    # 如果需要重新选择只需要
    sudo select-editor
    3
    

    该内容学习自慕课网Crontab不知疲倦的时间表

  • 相关阅读:
    Resharper进阶一
    脚本(js)控制页面输入
    IE图标消失 HTML文件图标变为未知图标的解决方法
    memcache_engine + memcachedb = 高性能分布式内存数据库
    sql 求差值
    MSN、QQ的网页链接代码
    IFrame语法:IFrame实例应用集
    Memcache协议
    Windows下的Memcache安装
    文本框 价格 保留两位小数 讨论
  • 原文地址:https://www.cnblogs.com/luckyzs/p/13398434.html
Copyright © 2020-2023  润新知