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-% ...
随机推荐
- 授权|取消授权MYSQL数据库用户权限
授权 queryusr用户查询test数据库 grant select on test.* to queryusr@'%'; flush PRIVILEGES 收回queryusr用户查询test数据 ...
- .NET周刊【12月第2期 2024-12-08】
国内文章 终于解决了.net在线客服系统总是被360误报的问题(对软件进行数字签名) https://www.cnblogs.com/sheng_chao/p/18581139 升讯威在线客服与营销系 ...
- 解决Vim粘贴格式乱问题
在vim粘贴代码的时候,粘贴的代码(shift+insert)会自动缩进,导致格式非常混乱. 本人深受其害,查阅网上大牛,发现以下方式均可行,与大家分享. 下面介绍两种方法: (1)在vim中,进入命 ...
- 【YashanDB知识库】Oracle pipelined函数在YashanDB中的改写
本文内容来自YashanDB官网,原文内容请见 https://www.yashandb.com/newsinfo/7802940.html?templateId=1718516 [问题分类]功能使用 ...
- springboot 2.x 集成quartz持久化到一个单独的dataSource时遇到的坑
由于希望可以在集群环境中运行定时job,但考虑到多个job实例有可能带来job重复执行的问题,新项目的job打算从原生的spring task实现改成quartz job实现,并采用jdbc的存储方式 ...
- Qt音视频开发22-通用GPU显示
一.前言 采用GPU来绘制实时视频一直以来都是个难点,如果是安防行业的做视频监控开发这块的人员,这个坎必须迈过去,本人一直从事的是安防行业的电子围栏这个相当小众的细分市场的开发,视频监控这块仅仅是周边 ...
- DVWA靶场搭建及错误解决教程
前言 DVWA(Damn Vulnerable Web Application)靶场是一个旨在帮助安全人员和开发人员学习和提高网络安全技能的开源项目.它是一个故意存在多种安全漏洞的 PHP/MySQL ...
- Spring Security默认登录页面代码位于哪里?
问:Spring Security默认登录页面代码位于哪里? 答:它是从此类生成的org.springframework.security.web.authentication.ui.DefaultL ...
- R语言学习数据挖掘
1.用R计算数据基本统计量(均值) 学习机器学习和数据挖掘中的各种算法和模型,需要掌握统计学的基本概念.统计学是通过搜索.整理.分析数据等手段,以达到推断所测对象的本质,并预测对象未来走势的一门综合性 ...
- CCS(TI IDE)中英文切换
介绍 使用CSS时会遇到中英文切换的问题,使用中文可以方便我们更好的开发,但是由于一些专业名词的原因我们有时候又需要英文环境,所以中英文切换就显得十分重要. 由于CCS基于eclipse开发,所以CC ...