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. js替换时,空格被替换为双引号

    替换代码 str.replace(/\"/g, "'") 将双引号替换为单引号,如果字符串中,存在space(空格)时,使用以上语句将会导致空格被替换为双引号,可以使用如 ...

  2. cf1000E

    先缩点构造出一颗树,然后求树的直径就好 const int maxn=3e5+5; const int maxm=6e5+5; const int inf=1e9; int head[maxn],ve ...

  3. gulp常用插件之gulp-cache使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-cache这是一款基于临时文件的gulp缓存代理任务. 更多使用文档请点击访问gulp-cache工具官网. 安装 一键安装不多解释 n ...

  4. 论文阅读笔记(十二)【CVPR2018】:Exploit the Unknown Gradually: One-Shot Video-Based Person Re-Identification by Stepwise Learning

    Introduction (1)Motivation: 大量标记数据成本过高,采用半监督的方式只标注一部分的行人,且采用单样本学习,每个行人只标注一个数据. (2)Method: 对没有标记的数据生成 ...

  5. 原型链污染(Node.js污染,javasrcipt原型链污染的)

    学习链接: https://www.jianshu.com/p/6e623e9debe3 关于NJS  https://xz.aliyun.com/t/7184 相关题是 GYCTF  ez_expr ...

  6. Quartz.NET 2.x教程

    第1课:使用Quartz第2课:工作和触发器第3课:关于工作和JobDetails的更多信息第4课:有关触发器的更多信息第5课:SimpleTriggers第6课:CronTriggers第7课:Tr ...

  7. vue配置开发,测试,生产环境api

    npm run build 调用开发环境接口,打包开发环境npm run build:test 调用测试环境接口,打包测试环境npm run build:prod 调用生产环境接口,打包生产环境 vu ...

  8. 在vue中使用elementUI饿了么框架使用el-tabs,切换Tab如何实现实时加载,以及el-table表格使用总结

    当我们在开发中遇到tab切换,这时候用el的el-tabs感觉很方便 但当我在把代码都写完后,发现一个问题就是页面打开时 虽然我们只能看见当前一个tab页,但是vue会帮你把你写的所有tab页的内容都 ...

  9. npm 模块开发调试技巧之最优方案npm link

    在我们平时写项目中,当我们需要新开发或修改的 npm 模块时,如何在本地项目中调试呢? 本地项目路径:G:\npm\project 开发的模块路径:G:\npm\model 方法一: 在cmd命令窗口 ...

  10. Java单体应用 - 架构模式 - 02.MVC架构

    原文地址:http://www.work100.net/training/monolithic-architecture-mvc.html 更多教程:光束云 - 免费课程 MVC架构 序号 文内章节 ...