当前位置: 首页 > news >正文

【shell】每日shell练习:系统备份文件管理/系统性能趋势分析

题目9:系统备份文件管理

描述:管理备份文件,自动清理过期备份并生成备份报告。

测试数据(保存为 backup_files.txt):

-rw-r--r-- 1 root root 104857600 Dec  1 10:30 database_backup_20231201_1030.sql.gz
-rw-r--r-- 1 root root 103809024 Nov 30 10:25 database_backup_20231130_1025.sql.gz
-rw-r--r-- 1 root root 102760448 Nov 29 10:20 database_backup_20231129_1020.sql.gz
-rw-r--r-- 1 root root 101711872 Nov 28 10:15 database_backup_20231128_1015.sql.gz
-rw-r--r-- 1 root root 100663296 Nov 27 10:10 database_backup_20231127_1010.sql.gz
-rw-r--r-- 1 root root  99614720 Nov 26 10:05 database_backup_20231126_1005.sql.gz
-rw-r--r-- 1 root root  98566144 Nov 25 10:00 database_backup_20231125_1000.sql.gz
-rw-r--r-- 1 root root  97517568 Nov 24 09:55 database_backup_20231124_0955.sql.gz
-rw-r--r-- 1 root root  96468992 Nov 23 09:50 database_backup_20231123_0950.sql.gz
-rw-r--r-- 1 root root  95420416 Nov 22 09:45 database_backup_20231122_0945.sql.gz
-rw-r--r-- 1 root root  94371840 Nov 21 09:40 database_backup_20231121_0940.sql.gz
-rw-r--r-- 1 root root  93323264 Nov 20 09:35 database_backup_20231120_0935.sql.gz
-rw-r--r-- 1 root root  92274688 Nov 19 09:30 database_backup_20231119_0930.sql.gz
-rw-r--r-- 1 root root  91226112 Nov 18 09:25 database_backup_20231118_0925.sql.gz
-rw-r--r-- 1 root root  90177536 Nov 17 09:20 database_backup_20231117_0920.sql.gz
-rw-r--r-- 1 root root  89128960 Nov 16 09:15 database_backup_20231116_0915.sql.gz
-rw-r--r-- 1 root root  88080384 Nov 15 09:10 database_backup_20231115_0910.sql.gz
-rw-r--r-- 1 root root  87031808 Nov 14 09:05 database_backup_20231114_0905.sql.gz
-rw-r--r-- 1 root root  85983232 Nov 13 09:00 database_backup_20231113_0900.sql.gz
-rw-r--r-- 1 root root  84934656 Nov 12 08:55 database_backup_20231112_0855.sql.gz
-rw-r--r-- 1 root root  83886080 Nov 11 08:50 database_backup_20231111_0850.sql.gz
-rw-r--r-- 1 root root  82837504 Nov 10 08:45 database_backup_20231110_0845.sql.gz
-rw-r--r-- 1 root root  81788928 Nov  9 08:40 database_backup_20231109_0840.sql.gz
-rw-r--r-- 1 root root  80740352 Nov  8 08:35 database_backup_20231108_0835.sql.gz
-rw-r--r-- 1 root root  79691776 Nov  7 08:30 database_backup_20231107_0830.sql.gz
-rw-r--r-- 1 root root  78643200 Nov  6 08:25 database_backup_20231106_0825.sql.gz
-rw-r--r-- 1 root root  77594624 Nov  5 08:20 database_backup_20231105_0820.sql.gz
-rw-r--r-- 1 root root  76546048 Nov  4 08:15 database_backup_20231104_0815.sql.gz
-rw-r--r-- 1 root root  75497472 Nov  3 08:10 database_backup_20231103_0810.sql.gz
-rw-r--r-- 1 root root  74448896 Nov  2 08:05 database_backup_20231102_0805.sql.gz

#!/bin/bash
#备份文件管理脚本#当前日期
current_date=$(date +%s)#分析备份文件
echo "备份文件统计:"
awk '{#提取文件大小和日期size=$5;date_str=$6" "$7" "$8" "filename=$9#累计总大小total_size+=sizefile_count++#按日期分类dates[date_str]++# 按大小分类if (size>100000000){large_file++}else if (size>50000000){medium_file++}else {small_files++}}END{print "  总文件数: " file_countprint "  总大小: " int(total_size/1024/1024) " MB"print "  大文件 (>100MB): " large_filesprint "  中等文件 (50-100MB): " medium_filesprint "  小文件 (<50MB): " small_filesprint "\n按日期统计:"for (date in dates) {print "  " date ": " dates[date] " 个文件"}
}' backup_files.txt#识别过期备份(假设保留三十天)
echo -e "\n===过期备份识别==="
awk -v current_date=$(date +%s)'{#提取文件日期mount=$6day=$7time=$8#简化日期处理(实际应用中需要更精确的日期计算)filename=$9if(NR>10){#模拟过期文件print"  ⚠️  过期备份: " filename " (建议清理)"expired_size+=$5}
}END{if (expired_count > 0) {print "\n  过期文件统计:"print "    数量: " expired_count " 个"print "    大小: " int(expired_size/1024/1024) " MB"print "    可释放空间: " int(expired_size/1024/1024) " MB"} else {print"  ✅ 没有发现过期备份"}
}' backup_files.txt#备份的策略
echo -e "\n===备份策略建议==="
total_files=$(wc -l < backup_files.txt)
total_size_mb=$(awk '{sum += $5} END{print int(sum/1024/1024)}' backup_files.txt)echo "  📊 当前备份情况:"
echo "    文件数量: $total_files 个"
echo "    总大小: $total_size_mb MB"if [[ $total_size_mb -gt 5000 ]]; then  echo "  ⚠️  备份文件占用空间较大,建议定期清理"
fiecho "  💡 建议的备份保留策略:"
echo "    - 每日备份: 保留7天"
echo "    - 每周备份: 保留4周"
echo "    - 每月备份: 保留12个月"
echo "    - 年度备份: 永久保留"

题目10:系统性能趋势分析

描述:分析系统监控数据,识别性能趋势并预测潜在问题。

测试数据(保存为 system_metrics.txt):

2023-12-01 00:00:00|CPU:25.3%|MEM:68.1%|DISK:/=25%,/home=88%|NET:rx=1.2MB,tx=0.8MB
2023-12-01 01:00:00|CPU:18.7%|MEM:65.2%|DISK:/=25%,/home=88%|NET:rx=0.9MB,tx=0.6MB
2023-12-01 02:00:00|CPU:12.4%|MEM:62.8%|DISK:/=25%,/home=88%|NET:rx=0.7MB,tx=0.5MB
2023-12-01 03:00:00|CPU:8.9%|MEM:60.1%|DISK:/=25%,/home=88%|NET:rx=0.5MB,tx=0.3MB
2023-12-01 04:00:00|CPU:5.6%|MEM:58.3%|DISK:/=25%,/home=88%|NET:rx=0.3MB,tx=0.2MB
2023-12-01 05:00:00|CPU:12.8%|MEM:59.7%|DISK:/=25%,/home=88%|NET:rx=0.6MB,tx=0.4MB
2023-12-01 06:00:00|CPU:28.4%|MEM:63.2%|DISK:/=25%,/home=88%|NET:rx=1.5MB,tx=1.1MB
2023-12-01 07:00:00|CPU:42.6%|MEM:67.8%|DISK:/=25%,/home=88%|NET:rx=2.8MB,tx=2.1MB
2023-12-01 08:00:00|CPU:56.7%|MEM:72.3%|DISK:/=25%,/home=88%|NET:rx=4.2MB,tx=3.5MB
2023-12-01 09:00:00|CPU:68.9%|MEM:76.5%|DISK:/=25%,/home=88%|NET:rx=5.1MB,tx=4.2MB
2023-12-01 10:00:00|CPU:75.2%|MEM:79.8%|DISK:/=25%,/home=88%|NET:rx=5.8MB,tx=4.8MB
2023-12-01 11:00:00|CPU:82.4%|MEM:83.1%|DISK:/=25%,/home=88%|NET:rx=6.2MB,tx=5.1MB
2023-12-01 12:00:00|CPU:88.7%|MEM:85.6%|DISK:/=25%,/home=88%|NET:rx=6.5MB,tx=5.3MB
2023-12-01 13:00:00|CPU:92.3%|MEM:87.2%|DISK:/=25%,/home=88%|NET:rx=6.7MB,tx=5.4MB
2023-12-01 14:00:00|CPU:89.6%|MEM:86.8%|DISK:/=25%,/home=88%|NET:rx=6.3MB,tx=5.1MB
2023-12-01 15:00:00|CPU:85.2%|MEM:85.1%|DISK:/=25%,/home=88%|NET:rx=5.9MB,tx=4.7MB
2023-12-01 16:00:00|CPU:78.9%|MEM:82.7%|DISK:/=25%,/home=88%|NET:rx=5.2MB,tx=4.1MB
2023-12-01 17:00:00|CPU:71.3%|MEM:80.2%|DISK:/=25%,/home=88%|NET:rx=4.6MB,tx=3.6MB
2023-12-01 18:00:00|CPU:62.7%|MEM:77.5%|DISK:/=25%,/home=88%|NET:rx=3.8MB,tx=2.9MB
2023-12-01 19:00:00|CPU:53.4%|MEM:74.1%|DISK:/=25%,/home=88%|NET:rx=3.1MB,tx=2.3MB
2023-12-01 20:00:00|CPU:41.8%|MEM:70.6%|DISK:/=25%,/home=88%|NET:rx=2.4MB,tx=1.7MB
2023-12-01 21:00:00|CPU:32.6%|MEM:67.2%|DISK:/=25%,/home=88%|NET:rx=1.8MB,tx=1.2MB
2023-12-01 22:00:00|CPU:24.1%|MEM:64.8%|DISK:/=25%,/home=88%|NET:rx=1.3MB,tx=0.9MB
2023-12-01 23:00:00|CPU:16.8%|MEM:62.3%|DISK:/=25%,/home=88%|NET:rx=0.9MB,tx=0.6MB

#!/bin/bash
#系统性能趋势分析echo "===系统性能趋势分析报告==="
#分析CPU使用趋势
echo "=== CPU使用率分析 ==="
awk -F'|' '{#提取CPU使用率split($2,cpu_parts,":")cpu_usage=substr(cpu_part[2],1,length(cpu_parts[2]-1))#统计total_cpu+=cpu_usagecount++#找出峰值if (cpu_usage>max_cpu){max_usage=cpu_usagemax_time=$1}#找出最低值if(NR==1||cpu_usage<min_cpu){min_cpu=cpu_usagemin_time =$1}#按时间段分类hour=substr($1,12,2)hourly_cpu[hour]+=cpu_usagehourly_count[hour]++
}
END{avg_cpu=total_cpu/countprint"平均cpu使用率:"sprint("%%.1f%",avg_cpu)print"最高cpu使用率:"max_cpu"% (时间:"max_time")"print"最低cpu使用率:"min_cpu"% (时间:"min_time")"#识别高峰时段print"\n各小时平均cpu使用率:"for(h in hourly){avg=hourly_cpu[h]/hour_count[h]if(avg>70){level=""} else if (avg>50){level=""}else{level=""}printf" %02d:00 - %02d:59: %.1f%% %s\n",h,h,avg,level}
}' system_metrics.txt#分析内存使用趋势
echo -e "\n===内存使用率分析==="
awk -F'|' '{#提取内存使用率split($3,mem_parts,":")mem_usage=substr(mem_parts[2],1,length(mem_parts[2])-1)#统计total_mem+=mem_usagecount ++#找出峰值if(mem_usage>max_mem){mem_mem=max_usagemax_time=$1}}END{avg_mem=total_mem/countprint"平均内存使用率:"sprintf(%.1f%%,avg_mem)print"最大内存使用率:"max_mem"%(时间:"max_time")"if(avg_mem>80){print "⚠️  内存使用率偏高,建议检查内存泄漏"}else if (avg_mem>60){print "ℹ️  内存使用率正常"}else{print "✅ 内存使用率较低,系统资源充足"}
}' system_metrics.txt#分析磁盘使用情况
echo -e "\n===磁盘使用情况==="
awk -F'|' '{#提取磁盘使用率disk_info=$4#简化处理,实际应用中需要解析具体的挂载点和使用率if (index(disk_info,"home=88")>0){high_disk_usage++}
}END{if(high_disk_usage>0){print "⚠️  /home 分区使用率较高 (88%),建议清理空间"}else {print "✅ 磁盘空间使用正常"}
}' systemc_metrics.txt#性能趋势预测
echo -e "\n===性能趋势预测==="
awk -F'|' ' NR>=20 {#分析最近四小时的cpu趋势split($,cpu_parts,":")cpu_usage=substr(cpu_parts[2],1,length(cpu_parts[2])-1)recent_cpu[NR]=cpu_usage
}END{#简单的线性趋势分析if(length(recent_cpu)>=4){sum=0for(i in recent_cpu){sum+=recent_cpu[i]}avg_recent=sum/length(recent_cpu)#如果最近平均值高于整体平均值,说明负载在上升overall_avg=50 #假设的整体平均值if(avg_recent>overall_avg+10){print "📈 负载呈上升趋势,建议关注系统性能"}else if (avg_recent<overall_avg-10){print "📉 负载呈下降趋势,系统趋于稳定"} else {print "➡️  负载保持稳定"}}
}' system_metrics.txt#优化建议
echo -e "\n===系统优化建议==="
#综合分析各项指标给出建议
cpu_avg=$(awk -F'|' '{split($2,p,":");sum+=substr(p[2],1,length(p[2])-1)}END{print sum/NR}' system_metrics.txt)
mem_avg=$(awk -F'|' '{split($2,p,":");sum+=substr(p[2],1,length(p[2])-1)}END{print sum/NR}' system_metrics.txt)if(($(echo "$cpu_avg>70"|bc -l)));thenecho "  🔧 CPU使用率偏高,建议:"echo "    - 检查高CPU消耗进程"echo "    - 考虑增加CPU资源"echo "    - 优化应用程序性能"
fiif(($(echo "$mem_avg>80" | bc -l)));thenecho "  🔧 内存使用率偏高,建议:"echo "    - 检查内存泄漏"echo "    - 增加物理内存"echo "    - 优化应用内存使用"
fiecho "  📊 建议定期监控系统性能指标"
echo "  📊 建立性能基线,便于异常检测"
echo "  📊 制定容量规划策略"

http://www.dtcms.com/a/526270.html

相关文章:

  • 重庆门户网站开发报价app开发公司十强
  • 广东建设协会网站首页关键词推广seo
  • Orleans 配置方式时序图
  • 网站建设 空间杭州 电子商务网站建设 网络服务
  • 有哪些图片设计网站有哪些问题网站权重最高
  • 怎样上传网站到百度wordpress 文章截取
  • 网站建设120wordpress左右
  • 如何上传网站模板如何评价一个网站设计的好坏
  • 苏州做网站费用东莞模板建站平台
  • 个人资质网站做推广wordpress漏洞 2014
  • 小型企业网站建设项目网站整合方案
  • 波音网站开发四川省住房建设厅官网
  • 丰城网站建设厦门专业网站营销
  • 黄山建设网站公司电话号码WordPress程序漏洞
  • 企业网站制作app登录wordpress
  • 门户网站建设 简报上海市工程建设质量管理协会网站
  • 全面解析网站建设及报价企业电子商务网站建设(论文
  • 网站内链案例常德论坛尚一网
  • Kylin Linux Advanced Server V10 上成功安装 NVIDIA Container Toolkit
  • 做货代在哪个网站找客源北京丰台做网站
  • 含山县住房和城乡建设局网站wordpress demo iframe
  • 新能源知识库(119)巴拿马电源和固态变压器两种方案的场景比较
  • 企业网站搭建新感觉建站网站页中繁体转移代码
  • KTH7112 是一款高速高精度的磁编码器,在轴应用,校准后 INL 精度 < ±0.1°
  • 品牌创意型网站建设哪些公司做网站比较好
  • SaaS系统多租户架构设计与核心技术实践
  • 茶山网站仿做寻找网站建设员
  • 动态线程池
  • 西安网站设计报价燃烧学课程网站建设
  • 网站js特效悬浮框建造师二级报名入口