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
— 业精于勤荒于嬉,行成于思毁于随 —
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南