第1个服务-定时任务
使用服务的流程: 部署,配置,优化/注意事项,排障,其他(监控,备份,日志,统一认证)
定时任务格式配置
定时任务案例
同步时间 备份
终极挑战: 通过脚本取出系统指标,通过邮件发送出去
定时任务箴言
1.概述
- 定时任务:用于执行在Linux中的重复性工作.eg:命令(同步系统时间),脚本(备2.份,系统巡检)
- 定时任务:类似于闹钟.
2.服务使用流程
服务使用流程 | 说明 |
---|---|
部署 | 安装这个服务或软件 |
配置 | 如何使用这个服务通过配置文件,通过命令. 初级使用:能用就行. 提高:额外配置. |
优化或注意事项 | 安全....... |
排障 | 难点, 🅰 通过错误提示解决. 🅱 学会看日志. 🆎高级:让服务输出错误提示或者输出更加详细的错误提示(通过重定向) |
其他 | 1️⃣ 做好监控 2️⃣做好备份 3️⃣ 好日志收集 4️⃣ 统一认证 |
3.部署定时任务
- 定时任务软件包名字: cronie , 服务名字(进程)crond
rpm -qa |grep 'cronie'
rpm -qa cronie
rpm -ql cronie
目录结构 | 说明 |
---|---|
1️⃣ /var/spool/cron/ | 用户 的定时任务的配置文件的目录 |
2️⃣ rontab | 定时任务管理的命令 |
3️⃣ /var/log/cron | 定时任务日志 |
了解下就行的配置文件 | |
/etc/crontab | 不推荐使用这个,系统定时任务的配置文件. |
/etc/cron.hourly/ | 系统 定时任务,每小时运行. |
/etc/cron.daily/ | 系统定时任务,每天运行 |
/etc/cron.weekly/ | 系统定时任务,每周运行. |
/etc/cron.monthly/ | 系统定时任务,每个月运行. |
- 检查是否运行
4.完全使用指南
4.1.配置的命令
crontab用于对定时任务的规则进行增删改查.
crontab选项 | 说明 | |
---|---|---|
crontab -e | edit编辑当前用户的定时任务 | vi /var/spool/cron/root #root当前用户的名字 |
crontab -l | list查看当前用户的定时任务 | cat /var/spool/cron/root #root当前用户的名字 |
[root@myvps ~]# crontab -l
no crontab for root
用户未设置定时任务[root@myvps ~]# crontab -e
no crontab for root - using an empty one
用户未设置定时任务 给你新建空的crontab: installing new crontab更新了定时任务的配置.
4.2.定时任务书写格式-时间 ⭐⭐⭐⭐⭐
每天早上8:30分 去学校(go to school)
#1.test01
30 08 * * * go to school晚上12点上床睡觉(go to bed/sleep) dbj
#2.test02* 00 * * * go to bed #每天的半夜12点00-59 每分钟运行.
00 00 * * * go to bed #每天运行问题:
表示整点的时候,未说明分钟的时候,我们要指定的分钟,一般是00.
关于分钟位置上是否写*说明
- 涉及到小时,天,周几的时候,分钟位置上记得写个数(00)
每周六半夜12点带cc去dbj * 00 * * 06 dbj 每周的半夜12点00-59,每分钟都大保健1次 (分钟1次) 0-5900 00 * * 06 dbj 每周六的半夜12点去dbj
4.3.定时任务时间部分的特殊符号 ⭐⭐⭐⭐⭐
时间部分特殊符号 | 说明 | 案例 |
---|---|---|
/ | 每隔xxx时间 | */2 * * * * 每两分钟 00 */2 * * * * 每两小时 |
- | 表示范围 | 00 08-22 * * * 08-22点的每个小时运行 00 08-22/3 * * * 08-22点的每3小时运行 |
, | 表示独立时间(没规律) | 00 08,11,14,17,20 * * * |
* | 每,全部/所有(没说具体时间) | 在分钟的位置上表示00-59,每分钟的意思 在小时位置上表00-23,每小时的意思. |
每天的上午7点到晚上11点 每二个小时运行CMD命令
00 07-23/2 * * * CMD
07 09 11 13 15 17 19 21 23
定时任务每天23点到第2天的7点运行.
00 23,00-07 * * *
5.定时任务案例
-
同步时间
-
进行备份
-
日常循环操作
-
巡检+发送邮件
-
时间+命令格式
5.1案例01: 每2分钟同步下系统的时间⭐⭐⭐⭐⭐
-
使用了什么命令? ntpdate ntp1.aliyun.com
-
书写定时任务配置文件:
#1. 同步时间 by lidao996 at 20221111
*/2 * * * * /sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1
- 调试(测试,检查)
- 修改下时间
date改下时间即可
- 日志:这个定时任务是否运行
定时任务日志只能提示是否运行了,但是无法告诉我们是否运行成功.
tail -f /var/log/cronNov 11 11:12:01 oldboy-aliyun-servers CROND[16436]:
(root) CMD (/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1)Aug 8 10:46:20 oldboy-aliyun-servers CROND[16449]:
(root) CMD (/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1)
- 查看定时任务的结果(时间是否修改,压缩包是否生成)
查看结果,时间是否他同步
5.2.案例02: 每天定时备份/etc/到/backup/下面 ⭐⭐⭐⭐⭐
备份时间:业务低谷期. 比如凌晨1点备份
✅ 命令: tar命令
✅ 脚本: 命令大礼包 .sh结尾 .bash结尾
✅ 定时任务配置:(每分钟运行)
✅ 调试完成改为要求的时间
- 命令:
mkdir -p /backup/
tar zcf /backup/etc-`date +%F_%w`.tar.gz /etc/
- 脚本
专用脚本目录:
mkdir -p /server/scripts/#书写脚本
cat backup-etc.sh
tar zcf /backup/etc-`date +%F_%w`.tar.gz /etc/#执行脚本
sh backup-etc.sh
- 定时任务-时间每分钟或每2分钟(调试)
#2. 定时备份 /etc/ 目录 by lidao996 at xxxx
* * * * * /bin/sh /server/scripts/backup-etc.sh >/dev/null 2>&1
- 检查日志与结果
watch ls -l
- 定时任务-调试完成后改为指定的时间运行
#2. 定时备份 /etc/ 目录 by lidao996 at xxxx
#00 01 * * * /bin/sh /server/scripts/backup-etc.sh >/dev/null 2>&1
5.3. 案例03: 脚本与变量(脚本深入)
-
概述:在脚本中需要重复使用内容(时间,ip地址....),我们最好把这些内容存放到变量中,在脚本中重复使用即可.
-
变量: 已知x=10,x+y=20,问y=? x或y叫做未知数 ,现在可以叫做变量.
-
变量的内容可以变换.
-
使用:
- kui变量命令 ----> 书名字 ----> 葵花宝典
- 向变量中赋值(写内容) ----> 写读后感 ----> 欲练此功必先自宫,如不自宫也能成功
- 取值 ----> 读书 -----> 读取书本内容
#赋值 修改变量内容(创建)
kui="欲练此功必先自宫,如不自宫也能成功"#取值
echo $kui
欲练此功必先自宫,如不自宫也能成功
变量命名规则:
不能以数字开头
如果要用特殊符号,最好使用_
变量名字能够体现出变量作用.
- 变量应用
#写入固定的内容
dir=/server/scripts/
file=backup-etc.sh#写入命令的结果(一般是命令的结果)
time=`date +%F_%w`
echo $time
创建以时间命名的文件oldboy-时间.txt
time=`date +%F_%w`
touch oldboy-$time.txt
- 在脚本中使用变量
定义变量
time=`date +%F_%w_%H
引用变量-备份
tar zcf /backup/etc-$time.tar.gz /etc/
#find /backup -type f -name "*.tar.gz" -mtime +30 |xargs rm -f