zoukankan      html  css  js  c++  java
  • 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不知疲倦的时间表

  • 相关阅读:
    springmvc
    POJ 3683 Priest John's Busiest Day
    POJ 3678 Katu Puzzle
    HDU 1815 Building roads
    CDOJ UESTC 1220 The Battle of Guandu
    HDU 3715 Go Deeper
    HDU 3622 Bomb Game
    POJ 3207 Ikki's Story IV
    POJ 3648 Wedding
    HDU 1814 Peaceful Commission
  • 原文地址:https://www.cnblogs.com/luckyzs/p/13398434.html
Copyright © 2011-2022 走看看