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源速度很慢,所以换成国内的. 第一步:先备份 ...
随机推荐
- lasso-ridge
线性回归 线性回归很简单,用线性函数拟合数据,用 mean square error (mse) 计算损失(cost),然后用梯度下降法找到一组使 mse 最小的权重. lasso 回归和岭回归(ri ...
- 树莓派3B从装系统到安装RYU过程
1.首先安装的是2019-09-26-raspbian-buster-lite系统 2.更换成国内源 更改apt源 sudo nano /etc/apt/sources.list(更改apt源) de ...
- LeetCode 704. 二分查找
题目链接:https://leetcode-cn.com/problems/binary-search/ 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函 ...
- 问题 D: 八皇后
#include <cstdio> #include <vector> #include <algorithm> using namespace std; cons ...
- flex 属性
一.flex-direction(元素排列方向) 1.flex-direction:row://从左到右排列 2.flex-direction:column://从上往下排列 二.flex-wrap( ...
- python里的复数complex
复数是一个数学概念,包含了实部和虚部.在python设计语言中,可以直接定义以j为单位,也可以使用complex函数创建复数,这个函数可以传实部和虚部,也可以只传实部. 我们把形如z=a+bj(a,b ...
- 2级搭建类203-Oracle 19c SI ASM 静默搭建(OEL7.7)
Oracle 19c 单实例 ASM UDEV 方式在 OEL 7.7 上的安装
- Python面向对象三大特性(封装、继承、多态)
封装 类中把某些属性和方法隐藏起来,或者定义为私有,只在类的内部使用,在类的外部无法访问,或者留下少量的接口(函数)供外部访问:从上一篇文章中的私有属性与私有方法中的代码体现了该特性. class m ...
- "Chrome的network中无法显示OPTIONS请求"的解决方案
目录 #事故现场 #分析及解决方法 #参考 #事故现场 在前端发送一个跨域请求的时候,要先发送个options请求,从而获知服务端是否允许该跨域请求. 跨域资源共享标准新增了一组 HTTP 首部字段, ...
- unity踩坑2020-01-21
这几天一直在测试一个类似于传奇的2d界面游戏,目前做的测试为: 人物动作响应,主要是8方向的判断和资源文件精灵的刷新. 学到的知识点: 1,Enum.GetHashCode() 可以得到这个枚举的索引 ...