巧用shell指令碼統計磁碟使用情況

dbhelper發表於2015-01-17
在系統環境中存在大量的檔案時,統計磁碟空間的工作變得尤為重要。
首先是傳統的檔案統計,通常使用-s選項,但是隻能得到一個概要的資訊,如果想定位哪些檔案消耗的空間較大還是比較麻煩的。
[ora11g@rac1 new_test]$ du -s .
1296    .
[ora11g@rac1 new_test]$ du -sh .
1.3M    .
[ora11g@rac1 new_test]$ du -s .
1296    .
這個時候,勉強可以使用-s ./*的形式得到所有的資料夾的大小情況。但是還是不夠直觀。
[ora11g@rac1 new_test]$ du -s ./*
80      ./append
32      ./append_fix
60      ./COL_LIST
24      ./compare
56      ./DESC_LIST
4       ./DUMP
80      ./DUMP_LIST
44      ./extract
48      ./full_append
92      ./init
48      ./loading
8       ./monitor
20      ./net_extract
108     ./parallel
88      ./parfile
248     ./partition_append
76      ./partition_extract
128     ./prepare
40      ./split_loading
8       ./tab_parall.lst

這個時候可以考慮使用-S選項,得到的列表會統計資料夾及其目錄的大小。定位問題相對比較輕鬆。
[ora11g@rac1 new_test]$ du -S .
80      ./append
20      ./net_extract
80      ./DUMP_LIST
8       ./append_fix/ERRTAB_LIST
24      ./append_fix
48      ./loading
8       ./monitor
44      ./extract
248     ./partition_append
48      ./full_append
24      ./init/sqls/target
20      ./init/sqls/source
8       ./init/sqls
40      ./init
56      ./DESC_LIST
108     ./parallel
4       ./compare/logs
4       ./compare/sqls
16      ./compare
4       ./DUMP
28      ./prepare/post
28      ./prepare/pre
72      ./prepare
60      ./COL_LIST
76      ./partition_extract
88      ./parfile
4       ./split_loading/sqls
36      ./split_loading
12      .

但是如果檔案目錄下有很多的檔案和資料夾,查出來的結果就會比較凌亂。我們可以得到最佔用空間的10個目錄,這樣定位問題就比較有針對性。
下面的命令可以得到前10位的佔用空間較大的目錄。透過sed直接過濾了前10位之後的資訊。
[ora11g@rac1 test]$ du -S .|sort -rn|sed '{11,$D;}'
130668  .
552     ./ext_datapump/split_loading
500     ./parallel
460     ./ext_datapump_14_jul/DUMP
444     ./ext_datapump/split_loading/log_bak
324     ./ext_datapump/DUMP_LIST
316     ./ext_datapump/ext_datapump/DUMP_LIST
316     ./ext_datapump_14_jul/ext_datapump/DUMP_LIST
304     ./ext_datapump/DESC_LIST
300     ./ext_datapump/COL_LIST



這樣看起來還可以,但是如果輸出的結果中顯示空間的佔用情況排名就好了。比如 
1   x xxx
2   xxxxxx
我們可以輸出行號,然後換行
先輸出行號
[ora11g@rac1 test]$ du -S .|sort -rn|sed '{11,$D;=}'
1
130668  .
2
552     ./ext_datapump/split_loading
3
500     ./parallel
4
460     ./ext_datapump_14_jul/DUMP
5
444     ./ext_datapump/split_loading/log_bak
6
324     ./ext_datapump/DUMP_LIST
7
316     ./ext_datapump/ext_datapump/DUMP_LIST
8
316     ./ext_datapump_14_jul/ext_datapump/DUMP_LIST
9
304     ./ext_datapump/DESC_LIST
10
300     ./ext_datapump/COL_LIST
[ora11g@rac1 test]$ 

然後換行
[ora11g@rac1 test]$ du -S .|sort -rn|sed '{11,$D;=}'|sed 'N;s/\n/ /'
1 130668        .
2 552   ./ext_datapump/split_loading
3 500   ./parallel
4 460   ./ext_datapump_14_jul/DUMP
5 444   ./ext_datapump/split_loading/log_bak
6 324   ./ext_datapump/DUMP_LIST
7 316   ./ext_datapump/ext_datapump/DUMP_LIST
8 316   ./ext_datapump_14_jul/ext_datapump/DUMP_LIST
9 304   ./ext_datapump/DESC_LIST
10 300  ./ext_datapump/COL_LIST

這個時候大部分工作都完成了,剩下的就是結果集的格式化了。可以簡單格式化一下。
[ora11g@rac1 test]$ du -S .|sort -rn|sed '{11,$D;=}'|sed 'N;s/\n/ /'|awk '{print $1 ":" "\t" $2 "\t" $3 "\n"}'
1:      130668  .

2:      552     ./ext_datapump/split_loading

3:      500     ./parallel

4:      460     ./ext_datapump_14_jul/DUMP

5:      444     ./ext_datapump/split_loading/log_bak

6:      324     ./ext_datapump/DUMP_LIST

7:      316     ./ext_datapump/ext_datapump/DUMP_LIST

8:      316     ./ext_datapump_14_jul/ext_datapump/DUMP_LIST

9:      304     ./ext_datapump/DESC_LIST

10:     300     ./ext_datapump/COL_LIST

最後可以把錯誤日誌做一個簡單的處理。
[ora11g@rac1 test]$ du -S . 2>/dev/null|sort -rn|sed '{11,$D;=}'|sed 'N;s/\n/ /'|awk '{print $1 ":" "\t" $2 "\t" $3 "\n"}'
1:      130668  .

2:      552     ./ext_datapump/split_loading

3:      500     ./parallel

4:      460     ./ext_datapump_14_jul/DUMP

5:      444     ./ext_datapump/split_loading/log_bak

6:      324     ./ext_datapump/DUMP_LIST

7:      316     ./ext_datapump/ext_datapump/DUMP_LIST

8:      316     ./ext_datapump_14_jul/ext_datapump/DUMP_LIST

9:      304     ./ext_datapump/DESC_LIST

10:     300     ./ext_datapump/COL_LIST
在這個基礎上可以發揮更多的功能,可以使用各種監控指標進行更進一步的擴充套件。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8494287/viewspace-1405501/,如需轉載,請註明出處,否則將追究法律責任。

相關文章