1. 概述

    1. cron 相关的理解与使用
  2. 背景

    1. 最近实在没啥写的了

      1. 我写东西, 一般是是这些

        1. 看了书过后, 做一些系统的整理

          1. 比如之前的 docker 和 git 系列
        2. 遇到了实际问题, 解决过程也不是那么顺利, 中间经历了一些求助与试错
          1. 一般就是先看异常, 再去百度, 找到有网友的解决方案, 自己照着做一遍, 然后洗稿...
    2. 最近在回顾 jojo 的奇妙冒险

      1. 里面一众时间系的能力, 让我大呼牛逼
    3. 于是, 在这个暂时找不到东西写的时间里, 我决定写一下 cron

      1. 兄弟, 能划水的东西写一个, 少一个, 你得加紧看书啊..
    4. 回想起早年的一些遗留问题

      1. 我用 cron, 用 crontab 命令写配置

        1. 能用但是查不到配置
      2. 我同事直接在 /etc/crontab 下写配置
        1. 当然能用
        2. 还比我的简单
      3. 是时候整理一下了
  3. 准备

    1. os

      1. centos 7

1. 一些场景

  1. 概述

    1. 列举一些场景
  2. 场景

    1. 我想在 某个特定的时间, 做某件事

      1. 比如

        1. 在 2019-12-31 23:59:59, 打印一句 Goodbye 2019
        2. 在 2019-12-07 22:42:18, 定时开机
          1. 你这是在为难我 linux
          2. 不过定时关机, 貌似是可以
    2. 我想在 按照某个特定的频率, 执行某个操作

      1. 比如

        1. 在 每一秒, 打印一下当前时间
        2. 在 每分钟的 30 秒, 打印时间
        3. 在 每小时的 30 分, 打印时间
        4. 在 每一天的 18 点, 打印时间
        5. 在 每个月的 15 日, 打印时间
        6. 在 每一周的 星期三, 打印时间
        7. 在 每一年的 1月1日, 打印时间
  3. 处理方法

    1. 人工

      1. 到时候定个闹钟, 然后运维去执行脚本

        1. 闹钟可能定错
        2. 运维可能没空
    2. 自动

      1. 事先准备好脚本
      2. 事先设定好时间
      3. 让 linux 自己去执行
    3. 怎么想, 都是后面那个靠谱

      1. 只要 服务器 开着, 就不会有问题
      2. 这块的工具, 确实有
        1. linux 上, 它叫做 cron
  4. 关于 cron 的名字

    1. wikipedia 上, 是这么描述的

      # cron 名字的来源, 是希腊语单词 时间, χρόνος.
      # 这单词咋读, 好像同 Chronos
      # 希腊神话里的时间之神 柯罗诺斯
      # 不过他和 宙斯他爹 克诺洛斯, 不是同一个人, 也没啥关系...
      The origin of the name cron is from the Greek word for time, χρόνος.

2. crontab 与 crond

  1. 概述

    1. 简介和比较 crontab 和 crond
  2. 场景

    1. 在虚机上, 当我尝试输入 cron 时, 出现了两个命令

      1. crond
      2. crontab
    2. 尝试

      1. help

        1. 两个命令的 help 输出不一样
      2. which
        1. 发下他们的路径, 也不一样
    3. 结论

      1. crond 和 crontab, 是两个不同的东西
  3. 二者关系

    1. crontab

      1. cron 的前台命令行

        1. 用来操作 crontable
        2. crontable 是记录每个用户 cron 命令行的脚本
    2. crond

      1. cron 的后台进程

        1. 通常是系统自带, 开机启动
        2. 每隔一段时间, 就会去扫描用户的 crontable
        3. 然后执行 crontable 中的语句
    3. 总结

      1. crond 和 crontab 是 cron 的组成部分

        1. crontab 是前台命令行
        2. crond 是后台守护进程

3. 任务调度

  1. 概述

    1. 简述 linux 的任务调度
  2. 任务调度

    1. 系统任务调度

      1. 概述

        1. 操作系统周期执行的 任务调度
        2. 这个简单了解一下
      2. 相关文件

        1. 系统日志相关

          # 系统日志
          # 这块我暂时了解不多, 不详细接受
          /etc/logrotate.d/syslog
        2. cron 相关

          # 系统使用的 cron 文件
          # 不建议用户使用
          # 里面有 格式描述
          /etc/crontab
          # 这里面也是 系统的人物
          /etc/cron.d/
          # 下面也是
          cron.daily
          cron.hourly
          cron.monthly
          crontab
          cron.weekly
    2. 用户任务调度

      1. 概述

        1. 每个用户, 有自己的任务调度
        2. 这个才是我们要用到的东西
      2. 相关文件

        1. cron 配置

          # 配置名字, 就是用户名
          # 按用户隔离
          /var/spool/
        2. 权限

          # 这俩目前怎么生效, 我暂时还不明白
          /etc/cron.deny
          /etc/cron.allow

4. cron 配置简述

  1. 概述

    1. 简述 cron 配置的写法
  2. 位置

    1. 示例

      # 这个是例子, 最好不要在这里直接加
      /etc/crontab
    2. 实际文件

      # 刚开始可能是空的, 后面会加上
      /var/spool/cron/
  3. 语法

    1. 变量

      # 指定 shell
      SHELL=/bin/bash
      # 指定 path
      # 没有指定的话, 命令需要带 完整路径
      PATH=/sbin:/bin:/usr/sbin:/usr/bin
      # 指定 mailto
      MAILTO=root
    2. 格式

      1. 时间

        1. 字段

            1. 取值范围

              1. 0 - 59
            1. 取值范围

              1. 0 - 23
            1. 取值范围

              1. 1 - 31
            1. 取值范围

              1. 1 - 12
            1. 取值范围

              1. 0 - 7
      2. 用户

        1. 指定 执行用户

          1. 注意, 此处有坑

            1. 这个配置, 在 crontab 中需要指定
            2. 在 /var/spool/cron 下不需要指定
              1. 指定了反而会出错
      3. 命令

        1. 指定执行命令
    3. 例子

      # 不适用 crontab
      # 使用 root 的 cron 配置
      # 每分钟 向 log 文件后追加 hello
      # 可以配合环境变量
      # 也可以 先用 which 命令, 查找 echo 的真实路径
      * * * * * /usr/bin/echo 'hello' >> /root/log

5. 操作

1. crond

  1. 准备

    1. cron 配置的执行, 前提是 crond 的启动
  2. 命令

    # 确认
    > systemctl status crond
    # 启动
    > systemctl start crond
    # 关闭
    > systemctl stop crond
    # 重启
    > systemctl restart crond

2. crontab

  1. 概述

    1. 操控 cron 命令
  2. 命令

    # 1. 查看当前用户的 cron 配置
    # 也可以把输出内容重定向, 用来做备份
    > crontab -l # 2. 如果是 root 用户, 则可以指定自己或者其他
    # 后面的命令, 也可以加 -u, 我就不多描述了
    > crontab -u <user> -l # 3. 编辑 cron 配置
    # 配合会写到 /var/spool/cron/<usr>
    > crontab -e # 4. cron 配置读入
    # 配置可以有 命令1 构造
    > crontab <filename>

3. 日志文件

  1. 概述

    1. 可以查看 cron 执行的日志文件
  2. 路径

    /var/log/cron

6. 其他

  1. cron 的使用, 感觉还是比较广泛的

    1. quartz

      1. 这个组件可以实现类似的功能

        1. 好像是 java

ps

  1. ref

    1. 在线Cron表达式生成器

      1. 很不错的东西

        1. 实在不想写, 可以让他帮你做
        2. 也可以在学习的时候, 用来做 标准答案
      2. 注意

        1. crontab 下的 cron 表达式, 没有 second 这个维度, 直接从 mintue 开始

          1. 不要搞错了
    2. Cron运行原理

      1. 深入到了 cron 的运行原理
      2. 我现在还不敢看, 愿它能给足够强大或者感兴趣的你带来帮助
      3. 博主在 cron 算是经验丰富, 很强大的人
    3. Linux crontab命令详解

      1. 明确区分了 任务调度 的种类

        1. 这个真的开拓了视野
    4. crond和crontab详解

      1. cron.deny 和 cron.allow 的讲解
      2. 结尾处的 日志
  2. 后续

    1. 系统日志
    2. 系统任务
    3. cron 表达式语法

Linux - cron - 基础的更多相关文章

  1. Linux进程基础

    Linux进程基础   作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 计算机实际上可以做的事情实质上非常简单,比如计算两个数的和 ...

  2. linux考试基础知识测验

    Linux系统管理基础测试(100分钟) 姓名: 座位号: 一.单项选择题:(每小题0.5分,共计30分)  1.    cron 后台常驻程序 (daemon) 用于:D A. 负责文件在网络中的共 ...

  3. 安装Linux系统,学习Linux操作基础

    20189230杨静怡 2018-2019-2 <移动平台开发实践>第1周学习总结 安装Linux系统内容总结 一.学习"基于VirtualBox虚拟机安装Ubuntu图文教程& ...

  4. 小朋友学Linux<一>基础篇

    Linux最基础之<小朋友也能学会Linux>... 1.Linux 知识积累: Linux 英文解释为 Linux is not Unix.学习Linux必须要熟练使用的操作系统是Cen ...

  5. Linu之linux系统基础优化和基本命令

    Linux系统基础优化和基本命令 网络参数设定命令 ifconfig: 查询,设置网卡和ip等参数 ifup,ifdown: 脚本命令,更简单的方式 ip: 符合指令,直接修改上述功能 编辑网卡配置文 ...

  6. Linux 系统基础优化和常用命令

    目录 Linux 系统基础优化和常用命令 软连接 tar解压命令 gzip命令 netstart命令 ps命令 kill命令 killall命令 SELinux功能 iptables防火墙 Linux ...

  7. linux(03)基础系统优化

    Linux之基础系统优化 Linux基础系统优化 >>> https://www.cnblogs.com/pyyu/p/9355477.html Linux的网络功能相当强悍,一时之 ...

  8. 运维 07 Linux系统基础优化及常用命令

    Linux系统基础优化及常用命令   Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令 ...

  9. Linux实战教学笔记06:Linux系统基础优化

    第六节 Linux系统基础优化 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 基础环境 第2章 使用网易163镜像做yum源 默认国外的yum源速度很慢,所以换成国内的. 第一步:先备份 ...

随机推荐

  1. JavaScript 自适应轮播图

    代码 话不多说,先上代码,方便复制粘贴.演示 <!DOCTYPE html> <html lang="en"> <head> <meta ...

  2. element-ui 1.4.13

    Form 表单 rules 表单校验函数需要访问实例中的属性时应该把校验规则写为computed,校验函数写入methods <el-form-item prop="taxableIn ...

  3. 推荐一本好书:编写可维护的JavaScript(可下载)

    目录 推荐一本好书:编写可维护的JavaScript(可下载) 书摘: 下载: 有些建议: 推荐一本好书:编写可维护的JavaScript(可下载) 书摘: 很多设计模式就是为了解决紧耦合的问题.如果 ...

  4. vue router的其他属性、 值的传递 、 懒加载

    路由的router-link标签有几个其他属性: 路由可以传递值(一般用作条目的id传递,之后用这个id从axios获取页面显示的数据 第一步: 定义路由以及值的属性名称(之后在跳转路由后页面里面获取 ...

  5. AOPS论坛上100+100个积分

    100+10 rare and irresistible integrals I bring you many beautiful integrals that I have collected ov ...

  6. 2020牛客寒假算法基础集训营1 F-maki和tree

    链接:https://ac.nowcoder.com/acm/contest/3002/F来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  7. Vue中常见参数传递方式

    文章内容:这里只有vue中父子组件传参.路由间的传参 (另外还有vuex.储存本地.中央bus等方式) 一.父子组件 1.1父传子(props) <!-- 父组件father.vue --> ...

  8. RN开发-Navigator

    1.在入口组件render方法中返回<Navigator>            let defaultName = 'Welcome';            let defaultCo ...

  9. 自定义Nginx返回页面

    1.403返回页面 #user nobody; worker_processes ; #error_log logs/error.log; #error_log logs/error.log noti ...

  10. js中的window.location.search的用法与作用。

    用该属性获取页面 URL 地址: window.location 对象所包含的属性 属性 描述 hash 从井号 (#) 开始的 URL(锚) host 主机名和当前 URL 的端口号 hostnam ...