巧用shell指令碼統計磁碟使用情況
在系統環境中存在大量的檔案時,統計磁碟空間的工作變得尤為重要。
首先是傳統的檔案統計,通常使用-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
在這個基礎上可以發揮更多的功能,可以使用各種監控指標進行更進一步的擴充套件。
首先是傳統的檔案統計,通常使用-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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 監控系統使用情況shell指令碼指令碼
- 用於自動監控磁碟使用情況的 Shell 指令碼指令碼
- 用 Linux Shell 指令碼來監控磁碟使用情況併傳送郵件Linux指令碼
- 巧用shell指令碼生成快捷指令碼指令碼
- 監控某個目錄使用情況的shell指令碼指令碼
- PowerShell 指令碼來監控 CPU、記憶體和磁碟使用情況:指令碼記憶體
- oracle pga使用情況常用指令碼:Oracle指令碼
- 監視磁碟使用情況
- 【shell】磁碟監控指令碼指令碼
- 通過shell指令碼檢視資料庫表空間使用情況指令碼資料庫
- 透過shell指令碼檢視資料庫表空間使用情況指令碼資料庫
- 更改後的監控某個目錄的使用情況的shell指令碼指令碼
- 檢視空間使用情況的指令碼指令碼
- 巧用shell生成資料庫檢查指令碼資料庫指令碼
- CentOS 系統的磁碟空間佔用情況查詢CentOS
- 查詢表空間使用情況的指令碼指令碼
- 檢視系統中磁碟(加磁碟陣列)空間的使用情況陣列
- 巧用shell指令碼分析資料庫使用者指令碼資料庫
- 利用shell指令碼統計程式碼行數指令碼
- 指令碼實現檢視錶空間使用情況指令碼
- Unity版本使用情況統計報告Unity
- 使用shell指令碼巧妙統計檔案指令碼
- 在Linux中,如何檢視系統的磁碟使用情況?Linux
- 監控磁碟使用率的shell指令碼指令碼
- 通過shell指令碼來統計段大小指令碼
- 統計子目錄大小的shell指令碼(轉)指令碼
- ORCLE中ASM磁碟空間使用情況查詢ASM
- Shell 指令碼程式設計陷阱指令碼程式設計
- 用 Bash 指令碼監控 Linux 上的記憶體使用情況指令碼Linux記憶體
- Dutree – Linux上的命令列磁碟使用情況分析工具Linux命令列
- Win10怎麼檢視磁碟空間使用情況?Win10
- 在Linux中,如何檢視磁碟詳細使用情況?Linux
- shell指令碼指令碼
- Shell 系統資訊監控指令碼指令碼
- shell指令碼程式設計筆記指令碼程式設計筆記
- 7.shell指令碼程式設計指令碼程式設計
- 初識shell指令碼程式設計指令碼程式設計
- shell指令碼程式設計基礎指令碼程式設計