• shell脚本:统计分析 /home/ 目录用户磁盘使用情况


     一、统计单台机器 /home/ 目录下磁盘空间使用 top3 的用户

    common.sh 脚本用于统计 /home/* 目录下存储空间 top3 的用户。

    du -sb /home/* |sort -nr |head -n 3  #单位为B

    二、统计分析多台分布式机器上 /home/ 目录用户磁盘使用情况

    #!/bin/sh
    # set -x # 打印执行过程
    
    SUBMIT_NODES="submit_nodes.txt"
    RESULT="result.txt"
    RESULT_TMP="result_tmp.txt"
    RESULT_SORTED="result_sorted.txt"
    >$RESULT>$RESULT_TMP
    >$RESULT_SORTED
    
    # 获取机器存储资源占用top3的用户
    while read node
    do
        echo $node
        ip=`echo $node | awk '{print $2}'`
        hostname=`echo $node | awk '{print $1}'`
        # du -sb /home/* |sort -nr |head -n 3 | awk '{print $2}' |awk -F '/' '{print $3}' 
        sshpass -p GHlsgj123fkjg ssh -p 22 root@$ip ~/common.sh < /dev/null > $RESULT_TMP
        # 文本后面追加主机名
        sed "s/$/ $hostname/g" $RESULT_TMP >> $RESULT
    done < $SUBMIT_NODES
    
    while read detail
    do
        size=`echo $detail | awk '{print $1}'`
        user=`echo $detail | awk '{print $2}' | awk -F '/' '{print $3}'`
        host=`echo $detail | awk '{print $3}'`
    
        # size >20G 则提示存储空间过大
        # 10737418240 = 1024*1024*1024
        base=21474836480
        point=1073741824
        if [ $size -gt $base ]
        then
            ret=""
            # 判断用户名是否是纯数字
            if echo $user | grep -q '.*[a-zA-Z].*+$'   #user中包含字母,则不是纯数字
            then
                echo "用户名中包含数字"
            else
                echo "用户名为纯数字"
            fi
            # 将size的单位B转换为GB
            size_gb=`awk 'BEGIN{printf "%.2f
    ",'$size'/'$point'}'`
        fi
    done < $RESULT_SORTED

    三、脚本中各文本存储的内容

    submit_nodes.txt 文本为分布式的多台机器的主机名和ip映射关系:

    bj01-prd-hdcm12.vivo.lan 10.20.8.44
    bj01-prd-hdcm11.vivo.lan 10.20.8.43
    bj01-prd-hdcm10.vivo.lan 10.20.8.42
    bj01-prd-hdcm09.vivo.lan 10.20.8.41
    bj01-prd-hdcm08.vivo.lan 10.20.8.40

    result_tmp.txt 文本统计中common.sh 脚本的结果:

    88259711304    /home/lzjiang
    15340678542    /home/bchan
    7084957806    /home/lshen

    result.txt 则在 result_tmp.txt 的基础上添加用户所在的主机,内容为:

    6711597524     /home/yi bjthq-dm-submit003.vivo.lan
    3199003459     /home/zqe bjthq-dm-submit003.vivo.lan
    134720196     /home/lsen bjthq-dm-submit003.vivo.lan
    34021727588    /home/xye bjthq-dm-submit002.vivo.lan
    27209081303    /home/lmie bjthq-dm-submit002.vivo.lan
    19496212317    /home/lpliu bjthq-dm-submit002.vivo.lan
    88259711304    /home/lzjiang bjthq-dm-submit001.vivo.lan
    15340678542    /home/bchn bjthq-dm-submit001.vivo.lan
    7084957806     /home/lhen bjthq-dm-submit001.vivo.lan

    result_sorted.txt 文本为根据空间大小降序排序后的结果:

    183747980482    /home/hbxie bjthq-dm-submit024.vivo.lan
    126803753630    /home/bhuag bjthq-dm-submit025.vivo.lan
    88259711304    /home/lzjang bjthq-dm-submit001.vivo.lan
    87781082370    /home/lmxie bjthq-dm-submit015.vivo.lan
    83735626868    /home/mxzhao bj01-prd-hdcm01.vivo.lan
  • 相关阅读:
    Jmeter 脚本录制
    Scrapy 爬虫模拟登陆的3种策略
    Scrapy Shell
    Ipython
    XPath helper
    python3 接口测试数据驱动之操作mysql数据库
    Pandas 基础(17)
    Pandas 基础(16)
    在 Laravel 项目中使用 Elasticsearch 做引擎,scout 全文搜索(小白出品, 绝对白话)
    Pandas 基础(15)
  • 原文地址:https://www.cnblogs.com/lemonu/p/10116739.html
Copyright © 2020-2023  润新知