Linux - cron - 基础

  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 表达式语法

原文地址:https://www.cnblogs.com/xy14/p/12010401.html

时间: 2024-10-11 09:54:15

Linux - cron - 基础的相关文章

linux系统基础优化

1.Linux系统基础优化 一.关闭SELinux功能 Selinux是什么? 安全工具,控制太严格,生产环境不用它,使用其他安全手段. 简介: SELinux带给Linux的主要价值是:提供了一个灵活的,可配置的MAC机制. Security-Enhanced Linux (SELinux)由以下两部分组成: 1) Kernel SELinux模块(/kernel/security/selinux) 2) 用户态工具 SELinux是一个安全体系结构,它通过LSM(Linux Security

Linux进程基础

Linux进程基础 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 计算机实际上可以做的事情实质上非常简单,比如计算两个数的和,再比如在内存中寻找到某个地址等等.这些最基础的计算机动作被称为指令 (instruction).所谓的程序(program),就是这样一系列指令的所构成的集合.通过程序,我们可以让计算机完成复杂的操作.程序大多数时候被存储为可执行的文件.这样一个可执行文件就像是一个菜谱,计算机可以按照菜谱作出可口的饭

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

目录 Linux 系统基础优化和常用命令 软连接 tar解压命令 gzip命令 netstart命令 ps命令 kill命令 killall命令 SELinux功能 iptables防火墙 Linux中文显示设置(防止中文乱码) df 命令 tree命令 设置主机名 DNS 查看Linux的dns, 唯一配置文件 本地强制dns解析文件 /etc/hosts nslookup命令 计划任务crond服务 软件包管理 windows程序 macos程序 RPM软件包管理器 实例 rpm安装软件 r

linux入门基础知识及简单命令介绍

linux入门基础知识介绍 1.计算机硬件组成介绍 计算机主要由cpu(运算器.控制器),内存,I/O,外部存储等构成. cpu主要是用来对二进制数据进行运算操作,它从内存中取出数据,然后进行相应的运算操作.不能从硬盘中直接取数据. 内存从外部存储中取出数据供cpu运存.内存的最小单位是字节(byte) 备注:由于32的cpu逻辑寻址能力最大为32内存单元.因此32位cpu可以访问的最大内存空间为:4GB,算法如下: 2^32=2^10*2^10*2^10*2^2 =1024*1024*1024

linux入门基础——linux软件管理RPM

因为linux入门基础是基于CentOS讲解的,讲的是CentOS上的软件包管理.ubuntu的软件包管理有这些:ubuntu软件包管理,包管理指南,ubuntu软件包管理. linux软件管理:RPM软件包管理 源代码形式 绝大多数开源软件都是直接以源代码形式发布 源代码一般会被打包成tar.gz的归档压缩文件 程序源代码需要手动编译成二进制形式之后才能够运行使用 源代码基本编译流程: 1 ./configure   检查编译环境.相关库文件以及配置参数并生成makefile 2 make  

linux入门基础——linux用户基础

linux用户基础 用户,组 当我们使用linux时,需要以一个用户的身份登入,一个进程也需要以一个用户的身份运行,用户限制使用者或者进程可以使用,不可以使用哪些资源. 用户的实质就是用来限制的. 组用来方便管理组织管理用户. 每个用户都拥有一个UserID,操作系统实际使用的是用户ID,而非用户名 每个用户属于一个主组,属于一个或者多个附属组 每个组拥有一个GroupID 每个进程以一个用户身份运行,并受该用户可访问的资源限制 每个可登陆用户拥有一个指定的shell. 用户 用户ID为32位,

Linux入门基础命令(四)

Linux入门基础命令(四)文件系统与目录结构: 1.文件和被组织成一个单根倒置树结构2.文件系统从根目录下开始,用"/表示"3.以.开头的文件为隐藏文件4.路径分割的 /5.文件有两类数据(元数据:metadata 数据:data)6.文件系统分层结构:LSB(Linux Standard Base)FHS:(Filesystem Hierarchy Standard)7.文件名最长255个字节8.包括路径在内文件名称最长4095个字节9.蓝色-->目录 绿色-->可执行

Linux入门基础命令—cp

Linux入门基础命令-cpcp格式有以下几种 A1.如果SOURCE是一个文件,目标文件不存在:当将SOURCE复制到另外一个当前目录下不存在的文件(会新建这个文件)比如下面的这个例子是把issue复制到abc文件中,而本来当前目录app是不存在abc这个文件的,当进行复制的时候会自动生成abc这个文件,当然这两个文件只是名字不同大小是一样的: A2.如果将上述的命令再执行一遍,本来abc这个文件是已经有内容了,若再去执行,那么issue中的内容将会覆盖掉原来abc中的内容(下面红色箭头所指的

Linux 初探 (基础认知篇)

linux 初探 (基础认知篇) 什么是linux? Linux是开源的类Unix系统,单纯的术语Linux来说其实仅仅指由林纳斯.托瓦兹开发并于1991年发布的一款存在于内核空间的操作系统内核(kernel). 为什么会开发要开发内核呢? 要从应用程序是如何在计算机上跑起来谈起,早期的应用程序需要了解CPU指令集利用汇编等语言进行开发.CPU的常见指令集架构:x86.x64(早期称其为amd64)兼容x86.m68000(m68k).arm.power.power pc(ppc,桌面级powe