Linux - cron - 基础
概述
- cron 相关的理解与使用
背景
最近实在没啥写的了
- 我写东西, 一般是是这些
- 看了书过后, 做一些系统的整理
- 比如之前的 docker 和 git 系列
- 遇到了实际问题, 解决过程也不是那么顺利, 中间经历了一些求助与试错
- 一般就是先看异常, 再去百度, 找到有网友的解决方案, 自己照着做一遍, 然后洗稿...
- 看了书过后, 做一些系统的整理
- 我写东西, 一般是是这些
最近在回顾 jojo 的奇妙冒险
- 里面一众时间系的能力, 让我大呼牛逼
于是, 在这个暂时找不到东西写的时间里, 我决定写一下 cron
- 兄弟, 能划水的东西写一个, 少一个, 你得加紧看书啊..
回想起早年的一些遗留问题
- 我用 cron, 用 crontab 命令写配置
- 能用但是查不到配置
- 我同事直接在 /etc/crontab 下写配置
- 当然能用
- 还比我的简单
- 是时候整理一下了
- 我用 cron, 用 crontab 命令写配置
准备
- os
- centos 7
- os
1. 一些场景
概述
- 列举一些场景
场景
我想在 某个特定的时间, 做某件事
- 比如
- 在 2019-12-31 23:59:59, 打印一句 Goodbye 2019
- 在 2019-12-07 22:42:18, 定时开机
- 你这是在为难我 linux
- 不过定时关机, 貌似是可以
- 比如
我想在 按照某个特定的频率, 执行某个操作
- 比如
- 在 每一秒, 打印一下当前时间
- 在 每分钟的 30 秒, 打印时间
- 在 每小时的 30 分, 打印时间
- 在 每一天的 18 点, 打印时间
- 在 每个月的 15 日, 打印时间
- 在 每一周的 星期三, 打印时间
- 在 每一年的 1月1日, 打印时间
- 比如
处理方法
人工
- 到时候定个闹钟, 然后运维去执行脚本
- 闹钟可能定错
- 运维可能没空
- 到时候定个闹钟, 然后运维去执行脚本
自动
- 事先准备好脚本
- 事先设定好时间
- 让 linux 自己去执行
怎么想, 都是后面那个靠谱
- 只要 服务器 开着, 就不会有问题
- 这块的工具, 确实有
- linux 上, 它叫做 cron
关于 cron 的名字
wikipedia 上, 是这么描述的
# cron 名字的来源, 是希腊语单词 时间, χρόνος.
# 这单词咋读, 好像同 Chronos
# 希腊神话里的时间之神 柯罗诺斯
# 不过他和 宙斯他爹 克诺洛斯, 不是同一个人, 也没啥关系...
The origin of the name cron is from the Greek word for time, χρόνος.
2. crontab 与 crond
概述
- 简介和比较 crontab 和 crond
场景
在虚机上, 当我尝试输入 cron 时, 出现了两个命令
- crond
- crontab
尝试
- help
- 两个命令的 help 输出不一样
- which
- 发下他们的路径, 也不一样
- help
结论
- crond 和 crontab, 是两个不同的东西
二者关系
crontab
- cron 的前台命令行
- 用来操作 crontable
- crontable 是记录每个用户 cron 命令行的脚本
- cron 的前台命令行
crond
- cron 的后台进程
- 通常是系统自带, 开机启动
- 每隔一段时间, 就会去扫描用户的 crontable
- 然后执行 crontable 中的语句
- cron 的后台进程
总结
- crond 和 crontab 是 cron 的组成部分
- crontab 是前台命令行
- crond 是后台守护进程
- crond 和 crontab 是 cron 的组成部分
3. 任务调度
概述
- 简述 linux 的任务调度
任务调度
系统任务调度
概述
- 操作系统周期执行的 任务调度
- 这个简单了解一下
相关文件
系统日志相关
# 系统日志
# 这块我暂时了解不多, 不详细接受
/etc/logrotate.d/syslog
cron 相关
# 系统使用的 cron 文件
# 不建议用户使用
# 里面有 格式描述
/etc/crontab
# 这里面也是 系统的人物
/etc/cron.d/
# 下面也是
cron.daily
cron.hourly
cron.monthly
crontab
cron.weekly
用户任务调度
概述
- 每个用户, 有自己的任务调度
- 这个才是我们要用到的东西
相关文件
cron 配置
# 配置名字, 就是用户名
# 按用户隔离
/var/spool/
权限
# 这俩目前怎么生效, 我暂时还不明白
/etc/cron.deny
/etc/cron.allow
4. cron 配置简述
概述
- 简述 cron 配置的写法
位置
示例
# 这个是例子, 最好不要在这里直接加
/etc/crontab
实际文件
# 刚开始可能是空的, 后面会加上
/var/spool/cron/
语法
变量
# 指定 shell
SHELL=/bin/bash
# 指定 path
# 没有指定的话, 命令需要带 完整路径
PATH=/sbin:/bin:/usr/sbin:/usr/bin
# 指定 mailto
MAILTO=root
格式
时间
- 字段
- 分
- 取值范围
- 0 - 59
- 取值范围
- 时
- 取值范围
- 0 - 23
- 取值范围
- 日
- 取值范围
- 1 - 31
- 取值范围
- 月
- 取值范围
- 1 - 12
- 取值范围
- 天
- 取值范围
- 0 - 7
- 取值范围
- 分
- 字段
用户
- 指定 执行用户
- 注意, 此处有坑
- 这个配置, 在 crontab 中需要指定
- 在 /var/spool/cron 下不需要指定
- 指定了反而会出错
- 注意, 此处有坑
- 指定 执行用户
命令
- 指定执行命令
例子
# 不适用 crontab
# 使用 root 的 cron 配置
# 每分钟 向 log 文件后追加 hello
# 可以配合环境变量
# 也可以 先用 which 命令, 查找 echo 的真实路径
* * * * * /usr/bin/echo 'hello' >> /root/log
5. 操作
1. crond
准备
- cron 配置的执行, 前提是 crond 的启动
命令
# 确认
> systemctl status crond
# 启动
> systemctl start crond
# 关闭
> systemctl stop crond
# 重启
> systemctl restart crond
2. crontab
概述
- 操控 cron 命令
命令
# 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. 日志文件
概述
- 可以查看 cron 执行的日志文件
路径
/var/log/cron
6. 其他
- cron 的使用, 感觉还是比较广泛的
- quartz
- 这个组件可以实现类似的功能
- 好像是 java
- 这个组件可以实现类似的功能
- quartz
ps
ref
-
很不错的东西
- 实在不想写, 可以让他帮你做
- 也可以在学习的时候, 用来做 标准答案
注意
- crontab 下的 cron 表达式, 没有 second 这个维度, 直接从 mintue 开始
- 不要搞错了
- crontab 下的 cron 表达式, 没有 second 这个维度, 直接从 mintue 开始
-
- 深入到了 cron 的运行原理
- 我现在还不敢看, 愿它能给足够强大或者感兴趣的你带来帮助
- 博主在 cron 算是经验丰富, 很强大的人
-
- 明确区分了 任务调度 的种类
- 这个真的开拓了视野
- 明确区分了 任务调度 的种类
-
- cron.deny 和 cron.allow 的讲解
- 结尾处的 日志
-
后续
- 系统日志
- 系统任务
- cron 表达式语法
Linux - cron - 基础的更多相关文章
- Linux进程基础
Linux进程基础 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 计算机实际上可以做的事情实质上非常简单,比如计算两个数的和 ...
- linux考试基础知识测验
Linux系统管理基础测试(100分钟) 姓名: 座位号: 一.单项选择题:(每小题0.5分,共计30分) 1. cron 后台常驻程序 (daemon) 用于:D A. 负责文件在网络中的共 ...
- 安装Linux系统,学习Linux操作基础
20189230杨静怡 2018-2019-2 <移动平台开发实践>第1周学习总结 安装Linux系统内容总结 一.学习"基于VirtualBox虚拟机安装Ubuntu图文教程& ...
- 小朋友学Linux<一>基础篇
Linux最基础之<小朋友也能学会Linux>... 1.Linux 知识积累: Linux 英文解释为 Linux is not Unix.学习Linux必须要熟练使用的操作系统是Cen ...
- Linu之linux系统基础优化和基本命令
Linux系统基础优化和基本命令 网络参数设定命令 ifconfig: 查询,设置网卡和ip等参数 ifup,ifdown: 脚本命令,更简单的方式 ip: 符合指令,直接修改上述功能 编辑网卡配置文 ...
- Linux 系统基础优化和常用命令
目录 Linux 系统基础优化和常用命令 软连接 tar解压命令 gzip命令 netstart命令 ps命令 kill命令 killall命令 SELinux功能 iptables防火墙 Linux ...
- linux(03)基础系统优化
Linux之基础系统优化 Linux基础系统优化 >>> https://www.cnblogs.com/pyyu/p/9355477.html Linux的网络功能相当强悍,一时之 ...
- 运维 07 Linux系统基础优化及常用命令
Linux系统基础优化及常用命令 Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令 ...
- Linux实战教学笔记06:Linux系统基础优化
第六节 Linux系统基础优化 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 基础环境 第2章 使用网易163镜像做yum源 默认国外的yum源速度很慢,所以换成国内的. 第一步:先备份 ...
随机推荐
- 《80x86汇编语言程序设计教程》第二章课后题答案
2.5 习题 2.1 数据寄存器 1. 八个通用寄存器除了各自规定的专门用途外,它们均可以用于传送和暂存数据,可以保存算术逻辑运算中的各种操作数和运算结果. 2.1 AX和Al寄存器又称为累加器(ac ...
- UVA12325-注意提高效率的思路
题目大意:你有一个体积为N的箱子和两种数量无限的宝物.宝物1的体积为S1,价值为V1:宝物2的体积为S2,价值为V2.输入均为32位带符号的整数.你的任务是最多能装多少价值的宝物? 方法:其实也没 ...
- ip连接mysql时报不能连接
问题:springboot项目在用localhost连接mysql时没问题,但当localhost换成ip时出现 该问题:message from server: "Host 'DESKTO ...
- js面向对象怎么理解
js面向对象怎么理解 <一>. 认识对象.首先要认识对象:在编程中,对象(object)是具体的某一个实例,唯一的某一个个体.如:电脑就是一个统称,而你面前的这一台电脑就是对象.而电脑的统 ...
- 关于华为高斯数据库 GaussDB 版本及认证体系介绍
目录 你需要知道的 技术有国界 从它的名称说起 你听到过的版本 你听到过的流言蜚语 各个版本的区别 版本未来名称 华为 GaussDB 认证体系介绍 GaussDB 其他资料相关链接 你需要知道的 任 ...
- 深入浅出Mybatis系列一-Mybatis入门
注:本文转载自南轲梦 注:博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 最近两年 springmvc + mybatis 的在这种搭配还是蛮火的,楼主我呢, ...
- GD库的基本信息,图像的旋转、水印、缩略图、验证码,以及图像类的封装
GD库检测 <?php phpinfo(); ?> GD库安装• Windows 使用phpstudy • Linux 编译安装 –with-gd• Linux 编译安装扩展 GD库支持的 ...
- Spring学习笔记-装配Bean-02
什么是装配 创建应用对象之间写作关系的行为通常称为装配(wiring),这也是依赖注入(DI)的本质. Spring配置的可选方案 Spring提供了3中主要的装配机制: ● 在XML中进行显式配置. ...
- Subway POJ - 2502 spfa
#include<cstdio> #include<cmath> #include<cstring> #include<cstring> #includ ...
- WSO2 ESB XML定义语法(3)
6.Property Mediator 通过Synapse调解的每条消息都可以具有一组关联的属性.Synapse引擎和底层传输在处理的每条消息上设置了许多属性,用户可以操纵这些属性来修改消息流的运行时 ...