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源速度很慢,所以换成国内的. 第一步:先备份 ...
随机推荐
- js替换时,空格被替换为双引号
替换代码 str.replace(/\"/g, "'") 将双引号替换为单引号,如果字符串中,存在space(空格)时,使用以上语句将会导致空格被替换为双引号,可以使用如 ...
- cf1000E
先缩点构造出一颗树,然后求树的直径就好 const int maxn=3e5+5; const int maxm=6e5+5; const int inf=1e9; int head[maxn],ve ...
- gulp常用插件之gulp-cache使用
更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-cache这是一款基于临时文件的gulp缓存代理任务. 更多使用文档请点击访问gulp-cache工具官网. 安装 一键安装不多解释 n ...
- 论文阅读笔记(十二)【CVPR2018】:Exploit the Unknown Gradually: One-Shot Video-Based Person Re-Identification by Stepwise Learning
Introduction (1)Motivation: 大量标记数据成本过高,采用半监督的方式只标注一部分的行人,且采用单样本学习,每个行人只标注一个数据. (2)Method: 对没有标记的数据生成 ...
- 原型链污染(Node.js污染,javasrcipt原型链污染的)
学习链接: https://www.jianshu.com/p/6e623e9debe3 关于NJS https://xz.aliyun.com/t/7184 相关题是 GYCTF ez_expr ...
- Quartz.NET 2.x教程
第1课:使用Quartz第2课:工作和触发器第3课:关于工作和JobDetails的更多信息第4课:有关触发器的更多信息第5课:SimpleTriggers第6课:CronTriggers第7课:Tr ...
- vue配置开发,测试,生产环境api
npm run build 调用开发环境接口,打包开发环境npm run build:test 调用测试环境接口,打包测试环境npm run build:prod 调用生产环境接口,打包生产环境 vu ...
- 在vue中使用elementUI饿了么框架使用el-tabs,切换Tab如何实现实时加载,以及el-table表格使用总结
当我们在开发中遇到tab切换,这时候用el的el-tabs感觉很方便 但当我在把代码都写完后,发现一个问题就是页面打开时 虽然我们只能看见当前一个tab页,但是vue会帮你把你写的所有tab页的内容都 ...
- npm 模块开发调试技巧之最优方案npm link
在我们平时写项目中,当我们需要新开发或修改的 npm 模块时,如何在本地项目中调试呢? 本地项目路径:G:\npm\project 开发的模块路径:G:\npm\model 方法一: 在cmd命令窗口 ...
- Java单体应用 - 架构模式 - 02.MVC架构
原文地址:http://www.work100.net/training/monolithic-architecture-mvc.html 更多教程:光束云 - 免费课程 MVC架构 序号 文内章节 ...