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. [PAT] A1021 Deepest Root

    [题目大意] 给出n个结点和n-1条边,问它们能否形成一棵n个结点的树,如果能,从中选出结点作为树根,使整棵树的高度最大.输出所有满足要求的可以作为树根的结点. [思路] 方法一:模拟. 1 连通.边 ...

  2. 【H5适配 笔记1】rem适配

    设备像素比(dpr)= 物理像素(手机渲染像素.分辨率)/设备独立像素(手机所显示元素的大小) 视口(viewport) 布局视口(获取浏览器布局视口高度,包括内边距,但不包括垂直滚动条.边框和外边距 ...

  3. php文件上传与下载(附封装好的函数文件)

    单文件上传前端页面 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  4. cssflex兼容(横向顶边对齐)

    display: flex; display: -webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; ...

  5. MySql 中IFNULL、ISNULL、NULLIF用法(数据库判空)

    来源:http://blog.csdn.net/a466350665/article/details/52994761 http://blog.csdn.net/xingyu0806/article/ ...

  6. AtCoder Beginner Contest 068 ABCD题

    A - ABCxxx Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement This contes ...

  7. P问题,NP问题,NPC问题学习笔记

    参考:https://www.luogu.org/blog/styx-ferryman/chu-sai-bei-kao-gan-huo-p-wen-ti-np-wen-ti-npc-wen-ti-sh ...

  8. Spark Streaming:updateStateByKey报错 is not applicable for the arguments...

    ones.updateStateByKey(new Function2<List<Integer>, Optional<Integer>, Optional<Int ...

  9. layer弹出层右上角的关闭按钮怎么没有显示

    问题描述:layer弹出层右上角的关闭按钮怎么没有显示,但鼠标移上去又可以点击 解决方式: 这是因为样式中需要一个图标,你的项目中缺少.解决如下:1.下载图标:http://www-x-zi-han- ...

  10. [Agc002E/At1999] Candy Piles - 博弈论

    有n堆石子,第i堆有ai个石子.有两种操作: 把石子最多的那一堆给丢掉 把每一堆全部丢掉一个 谁拿走最后石子谁输.判断胜负情况. 直觉转化为一个走棋盘问题 考虑如何计算左下角点的状态 找到原点最右上方 ...