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\n",'$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