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

相关推荐

  • 马哥教育网络班21期-第一次课程作业

    计算机组成部分及其作用 1.总线 电子管道,携带信息字节并在各个部件间传输。分为地址总线,数据总线,控制总线。 CPU最大可寻址范围:2^N*M,  N为地址总线数量,M为数据总线数量。 2.I/O设备 I/O设备及输入输出设备,最常见的输入设备就是我们非常熟悉的键盘,鼠标,我们通过我们通过这些设备向计算机传达指令,让计算机完成我们想要它完成的工作…

    Linux干货 2016-06-29
  • 系统管理之Selinux详解

    SELinux: SELinux概念SELinux配置启用SELinux管理文件安全标签管理端口标签管理SELinux布尔值开关管理日志查看SELinux帮助 SELinux概述 SELinux: Secure Enhanced Linux, 是美国国家安全局「NSA=The National Se…

    Linux干货 2016-09-21
  • 一键编译安装httpd服务

    一键编译安装httpd服务 背景: httpd服务是一个常用的web服务,所以很多地方会用到,这里写一个一键编译安装httpd服务的脚本。 环境: 系统:centos6.9和centos7.3(应该所有的6和7的版本都可以使用) httpd源代码版本:httpd-2.2.34.tar.bz2和httpd-2.4.27.tar.bz2 。下载网址官网:http…

    2017-09-16
  • 查找帮助功能、Linux文件系统目录标准LHS介绍

    查找帮助 命令自带   COMMAND –help                      COMMAND -h 使用手册 man COMMAND…

    Linux干货 2016-10-30
  • Keepalive+Nginx高可用配置(主从)

    Keepalived高可用集群 一、Keepalived介绍 Keepalived软件主要通过VRRP协议实现高可用功能的。VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题,它能够保证当个别节点宕机时,整个网络可以不间断地运行。keepalived除…

    Linux干货 2016-12-30