检测系统负载
  JiJ96DoSHEh4 2023年11月13日 19 0
##shell脚本

#1)系统负载命令使用uptme看,过去1分钟的平均负载
#2)系统状态使用如下工具标记:top,vmstat,ss
#3)要求每隔20s监控一次
#4)系统状态信息需要保存到/opt/logs/下面,保留一个月,文件名建议带有e 后缀或者前缀


#!/bin/bash

##首先看/opt/log目录在不在,不在就创建
[ -d /opt/logs ] || mkdir -p /opt/logs

##while死循环
while :    
do
        ## 获取系统1分钟的负载,并且只取小数点前面的数字
        load=`uptime |awk -F 'average:' '{print $2}'|cut -d',' -f1|sed 's/ //g'| cut -d. -f1`
        if [ $load -ge 0 ]
        then
                ##分别记录top,vmstat和ss命令的执行结果
                top -bn1 |head -n 100 > /opt/logs/top.`date +%s`
                vmstat 1 10 > /opt/logs/vmstat.`date +%s`
                ss -an > /opt/logs/ss.`date +%s`
        fi
        ## 休眠20秒
        ## 找到30天以前的日志文件删除掉
        find /opt/logs \( -name "top*" -o -name "vmstat*" -o -name "ss*" \) -mtime +30 |xargs rm -f
done

<<'COMMENT'
关键知识点总结:
1)|| 用在两条命令中间,可以起到这样的效果:当前面命令不成功就会执行后面的命令
2)死循环可以使用while : + sleep结合
3)边写脚本边在命令行里调试
4)find里可以使用小括号将多个条件组合起来当成一个整体来处理

命令简单介绍:
1.awk命令中:-F用于指定字段分隔符,默认情况下awk将空格或制表符视为字段分隔符,
2.sed 's/ //g' s/表示替换操作的开始, // 表示要替换的内容,这里是空字符
3.top -bn1命令用于非动态的打印系统资源情况.按下"b"键可以禁止窗口刷新,按下"n"键后,可以指定显示几行数据,按下"1"键后,可以指定每隔几秒更新一次。
4.vmstat 1 10: 命令的作用是每隔1秒更新一次系统状态,总共更新10次.用于检查系统的实时状态,例如内存使用情况、CPU利用率、磁盘IO等
5.uptime: 显示系统已经运行的时间,当前登录用户数,系统平均负载。
6.ss -an :用于显示所有socket连接
COMMENT
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  JiJ96DoSHEh4   2023年11月13日   20   0   0 分隔符字段sed
  JiJ96DoSHEh4   2023年11月13日   146   0   0 上传文件列表sed
  JiJ96DoSHEh4   2023年11月19日   14   0   0 bashbcsed
JiJ96DoSHEh4
最新推荐 更多