Linux shell脚本编程练习题

《书籍上面的练习题》

问题:谁在霸占磁盘资源?

    如果您负责的Linux服务器上有许多用户,则经常需要解决的一个问题就是谁在使用所有磁盘空间。这是个老掉牙的问题有时比其他问题更难以弄清。

    不幸的是,虽然跟踪用户磁盘空间使用情况非常重要,但却没有一个Linux命令可以提供此信息。因此需要通过shell脚本将命令拼凑起来提取需要查找的信息。

效果如下:

Total Disk Usage by User
User    Space    Percent
--------------------------
user5    44     16.18%
user7    28     10.29%
user6    28     10.29%
user4    28     10.29%
user3    28     10.29%
user2    28     10.29%
user1    28     10.29%
neo      28     10.29%
user9    16      5.88%
user8    16      5.88%
--------------------------
Total    272

脚本如下:

#!/bin/bash
#calculate disk usage and report per user

Temp=`mktemp -t tmp.XXX`        #反引号,命令的执行结果
du -s /home/* | grep -v lost+found | sed 's/\/home\///g' | sort -g -r > $Temp
Total=`du -s /home | awk '{print $1}'`    #反引号,命令的执行结果
cat $Temp | awk -v n="$Total" '
BEGIN { 
        print "\033[31mTotal Disk Usage by User\033[0m";
        print "User\tSpace\tPercent";
        print "--------------------------"
}
{
        printf "%s\t%d\t%6.2f%\n",$2,$1,($1/n)*100            #printf格式化输出    #.#:第一个数字控制显示的宽度;第二个#表示小数点后的精度;
}
END {
        print "--------------------------";
        printf "Total\t%d\n",n
}'
rm -f $Temp

原创文章,作者:nice_neo_linux,如若转载,请注明出处:http://www.178linux.com/17959

(2)
nice_neo_linuxnice_neo_linux
上一篇 2016-06-09 22:14
下一篇 2016-06-09 22:14

相关推荐

  • 循环 函数 软件包 【中】

    循环 函数 软件包  【中】  创建无限循环 while true; do     循环体  done  until false; do     循环体  Done 特殊用法 while循环的特殊用法(遍历文件的每一行):      &nbs…

    Linux干货 2016-08-21
  • MySQL 字符集乱码及解决方案

    1、简介         字符集是一套符号和编码的规则,不论是在oracle数据库还是在mysql数据库,都存在字符集的选择问题,而且如果在数据库创建阶段没有正确选择字符集,那么可能在后期需要更换字符集,而字符集的更换是代价比较高的操作,也存在一定的风险,所以,我们推荐在应用开始阶段,就按…

    Linux干货 2015-09-27
  • N22-妙手-第八周课程练习

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。     网桥:         一种网络设备,负责网络桥接,将网络的多个网段在数据链路层连接起来。     集线器: &…

    Linux干货 2016-11-07
  • N21沉舟第十周作业

    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) 2、为运行于虚拟机上的CentOS 6添加一块新硬件,提供两个主分区;   (1) 为硬盘新建两个主分区;并为其安装grub;   (2) 为硬盘的第一个主分区提供内核和ramdisk文件; 为第二个分区提供rootfs;   (3) 为rootfs提供…

    Linux干货 2016-09-10
  • Linux进程与作业1

    Linux进程与作业 操作系统的组成部分:硬件,kernel,lib, 系统调用–>调用kernel lib调用–> 库调用,kernel调用 运行用户代码–>用户模式–>用户空间; 运行kernel–>内核模式–>内核空间; 内核的功用:进程管理,文件系统,网络功能,内存管理,驱动程序,安全功能 C…

    Linux干货 2016-08-02
  • cache: 缓存相关

    cache: 缓存相关 —————————————————— 以下所陈述的缓存概念多是相对web服务而言 缓存所起的作用就是加速,减轻后端服务器压力。一般而言,我们请求的web服务资源往往不是由后端 服务器所响应的(对于颇具规模的站点来说),而是由前端的缓存服务器所缓存的内容直接响应,所以, 我们得到的资源可能不实最新的,因为缓存的数据于后端服务器不一定时同…

    Linux干货 2016-11-08