Shell - 脚本案例
题记部分
一、节点状态监控脚本(nodeStatusCheck.sh
)
【脚本名称】
nodeStatusCheck.sh
【监控规则】通过
ping
的方式监控集群节点状态,检查节点是否失联【实现方式】
crontab
【监控频率】
*/10 * * * *
(每隔十分钟监控一次)
#!/bin/bash
for server in `cat /etc/hosts | grep [主机名前缀] | awk '{print $1}'`
do
# ping三次自行中断
ping -c 3 ${server}
# 如果返回结果不等于0则进行告警
if [ $? -ne 0 ];then
echo "`date -R` [WARN] ${server}节点异常" >>./log_nodeStatus_warn.log
# 也可以在此处调用短信接口,发送短信给运维人员
fi
done
二、磁盘使用率监控脚本(nodeDiskPercent.sh
)
【脚本名称】
nodeDiskPercent.sh
【监控规则】通过过滤节点超过阈值的目录的个数,返回主机名以及个数给负责短信告警的脚本使用。
【实现方式】
crontab
【监控频率】
0 */2 * * *
(每隔两小时监控一次)
#!/bin/sh
source /etc/profile
function dfCheck(){
for server in `cat /etc/hosts | grep [主机名前缀] | awk '{print $2}'`
do
result=`ssh ${server} sudo df -h | awk '{print $5}' | sed 's/.$//' | grep -E '[8-9][0-9]|100' | wc -l`;
echo ${server}:${result}
done
}
fucation dfReport(){
dfInfo=dfCheck
}
三、定时清理内存(缓存)脚本
脚本背景:
free -g
发现可用内存很少,服务运行异常。脚本目的:定时清理内存
脚本定时:
0 0 * * * sh /home/shell/cleanCache.sh
(每天凌晨0点执行一次)
#!/bin/bash
for ip in `cat /etc/hosts | grep node | awk -F ' ' '{print $2}'`
do
echo $ip
ssh $ip "sync;free -g;echo 3 > /proc/sys/vm/drop_caches;free -g"
done
date1=`date +"%Y-%m-%d %H:%M:%S"`
echo "Refresh ram cache successfully! ${date1}" >> /root/caches2023.log
sync
命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。将/proc/sys/vm/drop_caches
值设为3的作用是清除页缓存、目录项和inode缓存。 这个命令可以释放一些内存,但是需要注意的是,这个命令只会清除缓存,而不会释放物理内存。/proc/sys/vm/drop_caches
是一个Linux内核参数,用于控制是否清除缓存。当该参数的值为1时,会清除页缓存、目录项和inode缓存;当该参数的值为0时,不会清除缓存;当该参数的值为2时,会清除页面缓存、目录项和inode缓存。
四、数据库备份脚本
4.1、mysqlbackup_all_datas.sh
#备份全量脚本
#---请根据数据库实际参数,修改以下参数 -------
MY_user="root"
MY_pass="123456"
db_name="harley"
#1.判断备份路径是否存在,如不存在则创建路径
if [ ! -d "/data" ];then
mkdir /data
fi
if [ ! -d "/data/mysql_backup" ];then
mkdir /data/mysql_backup
fi
#2.自动删除28天前的备份数据(默认每隔1个星期备份一次)
clear_path="/data/mysql_backup"
find $clear_path -mtime +28 -name "*all_dates*.tar.gz" -exec rm -rf {} \;
#3.定义数据库链接,目标库信息
MY_conn="-u $MY_user -p$MY_pass"
#4.定义备份目录,工具,时间,文件名
BF_dir="/data/mysql_backup"
time="$(date +"%Y%m%d")"
#5.先导出为.sql脚本
cd $BF_dir
echo "正进入备份路径,准备备份"
echo "开始使用mysqldump备份中,请等待"
/data/mysql57/bin/mysqldump $MY_conn --databases $db_name > ${db_name}_all_datas_$time.sql
echo "备份完成,准备压缩,压缩完后会删除源文件"
#6.然后再进行压缩(打包后删除源文件)
/bin/tar zcf ${db_name}_all_datas_$time.tar.gz ${db_name}_all_datas_$time.sql --remove &> /dev/null
4.2、mysqlbackup_basic_data.sh
#备份基础数据脚本
#---请先修改以下参数 -------
MY_user="root"
MY_pass="123456"
db_name="harley"
#1.判断备份路径是否存在,如不存在则创建路径
if [ ! -d "/data" ];then
mkdir /data
fi
if [ ! -d "/data/mysql_backup" ];then
mkdir /data/mysql_backup
fi
#2.自动删除7天前的数据(默认每天备份一次)
clear_path="/data/mysql_backup"
find $clear_path -mtime +7 -name "*basic_date*.tar.gz" -exec rm -rf {} \;
#3.定义数据库链接,目标库信息
MY_conn="-u $MY_user -p$MY_pass"
#4.定义备份目录,工具,时间,文件名
BF_dir="/data/mysql_backup"
time="$(date +"%Y%m%d")"
#5.先导出为.sql脚本
cd $BF_dir
echo "正进入备份路径,准备备份"
echo "开始使用mysqldump备份中,请等待"
/data/mysql57/bin/mysqldump $MY_conn $db_name harley_linux harley_Python harley_Java > ${db_name}_basic_data_$time.sql
echo "备份完成,准备压缩,压缩完后会删除源文件"
#6.然后再进行压缩(打包后删除源文件)
/bin/tar zcf ${db_name}_basic_data_$time.tar.gz ${db_name}_basic_data_$time.sql --remove &> /dev/null
#备份基础库表如下:
#Linux业务表
#harley_linux linux表
#harley_Python Python表
#harley_Java Java表
4.3、clean_mysqlbackup.sh
#清理过期备份数据的脚本
clear_path="/data/mysql_backup"
find $clear_path -mtime +7 -name "*basic_date*.tar.gz" -exec rm -rf {} \;
find $clear_path -mtime +28 -name "*all_dates*.tar.gz" -exec rm -rf {} \;
4.4、定时任务(crontab -e
)
#这里的意思是每个星期天0:30 执行备份数据库全量的脚本,----这里要输入你放置脚本的路径
30 0 * * 0 /data_back/mysqlbackup_all_dates.sh
#这里的意思是每天02:30 执行备份数据库基础数据的脚本,----这里要输入你放置脚本的路径
30 2 * * * /data_back/mysqlbackup_basic_date.sh
#这里的意思是每天4:00 执行清理过期备份数据的脚本,----这里要输入你放置脚本的路径
0 4 * * * /data_back/clean_mysqlbackup.sh
— 业精于勤荒于嬉,行成于思毁于随 —
Shell - 脚本案例的更多相关文章
- shell脚本案例分享 - 业务系统日志自定义保留或删除需求
需求说明: 线上某些业务系统的日志不定期产生, 有的每天产生, 有的好几天才产生, 因为系统只有在用的时候才产生日志,日志文件均存放在以当天日期命名的目录下. 当日志目录越来越多时就需要处理, 由此 ...
- shell脚本 案例
1,写一个循环,ping整个子网的ip. 使用while循环 #!/bin/bash ip=223 while [ "$ip" -ne "239" ] ...
- shell脚本案例
1.MySQL数据库备份脚本,下面的脚本是Mysql全量备份+异地备份 一般Mysql数据库备份会采用在MYSQL从库上执行全量备份+增量备份方式.在从库备份避免Mysql主库备份的时候锁表造成业务影 ...
- 非交互式shell脚本案例-实现自主从oracle数据库获取相关数据,并在制定目录生成相应规则的文件脚本
get_task_id 脚本内容 #!/usr/bin/expect#配置登陆数据库的端口set port 22#配置登陆数据库的ip地址set oracleip 10.0.4.41#配置数据库实例名 ...
- 【Shell脚本案例】案例6:查看网卡实时流量
一.背景 监控,对服务器查看实时流量 了解服务器的数据传输量 二.说明 1.获取网络流量 ifconfig查看网卡就能看到数据包传输情况 2.可以使用工具查看 iftop cat /proc/net/ ...
- 【Shell脚本案例】案例5:找出CPU/内存率占用高的进程
一.背景 找出占用高的进程 使用脚本编写找出占用CPU的进程 二.分析 1.查看进程 top 输入后按C,就可以列出 其他: ps aux 2.思路 awk进行排序,如top10 即ps aux |a ...
- 【Shell脚本案例】案例3:批量创建100个用户并设置密码
一.背景 新入职员工创建用户 二.常规操作 useradd zhangsan ls /home/ password zhangsan 三.考虑问题 1.实现自动输入密码,将其存到文件中 passwor ...
- 【Shell脚本案例】案例1:服务器系统配置初始化
〇.目录 一.背景 新购买10台服务器,并安装Linux系统 目的:对操作系统进行配置的初始化 二.需求 1.设置时区并同步时间 2.禁用selinux安全机制 3.关闭防火墙(清空防火墙的默认策略, ...
- 30个关于Shell脚本的经典案例(下)
本文目录 21.从FTP服务器下载文件 22.连续输入5个100以内的数字,统计和.最小和最大 23.将结果分别赋值给变量 24.批量修改文件名 25.统计当前目录中以.html结尾的文件总大 26. ...
- 采用shell脚本定时清理Tomcat日志
1 Shell脚本案例 删除超过30天的日志文件 #!/bin/bash log_path=/mnt/software/apache-tomcat-.M22/logs d=`date +%Y-%m-% ...
随机推荐
- openEuler欧拉部署Jenkins
一.系统优化 关闭防火墙 systemctl stop firewalld systemctl disable firewalld 二.安装Jenkins dnf -y install docker ...
- RAG实践 - AI 知识库问答功能的建设
最近在工作中构建了一套自动的基于文档中心为数据集构建知识库 AI 问答的系统,来提升用户体验和技术支持效率,分享一下在实现过程中的技术选型和架构设计. 背景 先说下背景,我们公司的产品 FinClip ...
- 我的c语言笔记
1. 进制转换 二进制.八进制和十六进制向十进制转换都非常容易,就是"按权相加".如:1010.1101 = 1×23 + 0×22 + 1×21 + 0×20 + 1×2-1 + ...
- c# WPF convert photo to Sketch effects
using the online website https://imagetosketch.com/ <Window x:Class="WpfMosaic.PhotoSketchWi ...
- c# Progress<T>
c# Progress<T> 用于显示进度........主要是利用IProgress<T> 的Report(T)方法: private void BtnDownload_Cl ...
- 一点区块链资料-copy
1. 场景描述 (1)今天找资料,无意中看到15年底-16年初弄的关于区块链的资料,当时写了个交流汇报区块链的ppt,感觉挺好的,共享下,希望能帮助朋友们理解区块链. (2)背景:15年底,老板从朋友 ...
- Spring Boot 如何使用拦截器、过滤器、监听器
过滤器的使用 首先需要实现 Filter接口然后重写它的三个方法 init 方法:在容器中创建当前过滤器的时候自动调用 destory 方法:在容器中销毁当前过滤器的时候自动调用 doFilter 方 ...
- 分布式Session解决方案详解
4种分布式session解决方案 cookie和session的区别和联系 cookie是本地客户端用来存储少量数据信息的,保存在客户端,用户能够很容易的获取,安全性不高,存储的数据量小session ...
- Java技术栈总结-提升
1 java基础: 1.1 算法 1.1 排序算法:直接插入排序.希尔排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序 1.2 二叉查找树.红黑树.B树.B+树.LSM树(分别有对应 ...
- 第三章 (Nginx+Lua)Redis/SSDB安装与使用
目前对于互联网公司不使用Redis的很少,Redis不仅仅可以作为key-value缓存,而且提供了丰富的数据结果如set.list.map等,可以实现很多复杂的功能:但是Redis本身主要用作内存缓 ...