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.www58058.com/17959

(2)
nice_neo_linuxnice_neo_linux
上一篇 2016-06-09 20:23
下一篇 2016-06-09 22:15

相關推薦

  • Shell腳本編程之入門基礎(二)if、case的使用

    Shell編程之條件選擇和條件判斷   一、條件選擇(if)與條件判斷(case)的對比: if語句:是選擇執行,if語句可嵌套。 if條件選擇使用格式 單分支 雙分支 多分支 if 判斷條件;then 條件為真的分支代碼 fi if 判斷條件; then 條件為真的分支代碼 else 條件為假的分支代碼 fi if CONDITION1; the…

    Linux干貨 2016-08-15
  • 對inode的初步理解

    1.什么是inode?     inode中文譯作”索引節點“,是linux操作系統中的一種數據結構,用來存儲文件的元數據信息。在linux系統中每個文件都會分配一個inode,我們也可以把inode看作指針,它永遠指向文件的具體存儲位置。 2.inode中包含了什么信息? * inode 編號 * 用來識別文件類型,以及用于 …

    2017-07-18
  • Linux第一周心得

          第一次接觸Linux,內心還是有點緊張,怕自己學不會、怕太難。不過,還是想挑戰一下自己,所以來到了馬哥學習Linux。      過來的第一天有點坎坷,不過還好有小琰姐的陪伴,一直和我們東西奔走,總算是解決了一大堆的麻煩,所以,感激……表白小琰姐!哈哈哈  撒花花  …

    Linux干貨 2017-07-15
  • CentOS下搭建LAMP

    實驗:centos7.3實現lamp應用wordpress環境 host1 httpd,php? host2 mariadb1 yum install httpd php php-mysqlyum install mariadb-serversystemctl start httpdsystemctl start mariadb 2 創建數據庫及用戶mysq…

    2017-10-16
  • Linux系統的介紹及如何獲取幫助?(學習筆記)

    第一、Linux 基礎   CPU架構:      x86      x64 (amd64)      m68000,m68k      arm    &nbs…

    Linux干貨 2016-12-12
  • 磁盤管理詳解

    linux系統如何識別硬盤 硬盤類型:        按接口可劃分為        并行             &nb…

    Linux干貨 2016-08-29
欧美性久久久久