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源速度很慢,所以换成国内的. 第一步:先备份 ...
随机推荐
- Pandas 中对列 groupby 后进行 sum() 与 count() 区别及 agg() 的使用方法
groupby[根据哪一列][ 对于那一列].进行计算 代码演示: direction:房子朝向 view_num:看房人数 floor:楼层 计算: A 看房人数最多的朝向 df.groupby([ ...
- 1级搭建类113-Oracle 11gR2 SI FS(OEL 6.10)
Oracle 11g 单实例文件系统搭建(EMDC) EMDC:Database Control 单实例主机.数据库等监控,这东西12c之后没有了 EMGC:Grid Control 单独安装GC软件 ...
- jQuery---prop方法和表格全选案例
prop方法和表格全选案例 对于布尔类型的属性,不用attr方法,应该用prop方法 prop用法跟attr方法一样 <input type="button" value=& ...
- maven - 一键删除maven仓库无效jar包工具
背景 在进行maven开发时,往往需要下载大量jar包,而由于网络不稳定等其他因素可能导致jar未下载完毕,然后保留了lastUpdated文件,导致无法更新失效的jar包. 现在提供个bat脚本,只 ...
- 获取url参数(jq 扩展包)
(function($){ $.extend({ urlGet:function(url) { var getUrl = url ? url.split("?") : window ...
- CLOUD将excel数据引入单据体
http://club.kingdee.com/forum.php?mod=viewthread&tid=989239 http://club.kingdee.com/forum.php?mo ...
- .net Core 安装在linux上
1.安装 .net Core 参考官方网站 https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install 2.发布应用程 ...
- AntDesign(React)学习-4 登录页面提交数据简单实现
github代码:https://github.com/zhaogaojian/jgdemo 全国肺炎,过节期间没地方去在家学习antd. 一.感觉antd pro项目太庞大了,可以学习下结构和代码风 ...
- Tomcatd断点调试Debug
ideaDebug设置
- C 库函数 - strcpy()
描述 C 库函数 char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest. 需要注意的是如果目标数组 dest 不够大,而源字符 ...