2008-09-02 66 views
9

In this question有人要求提供在Linux中顯示磁盤使用情況的方法。我希望進一步沿着cli路徑走一步......如何從一個合理的答案獲取輸出到上一個問題的shell腳本,並從中生成一個圖形/圖表(輸出爲png文件或其他)?這可能是有點太多的代碼在常規的問題要問的,但我的猜測是,有人已經擁有oneliner某處周圍鋪設...在Linux中使用CLI生成磁盤使用情況圖表/圖表

回答

6

我會推薦munin。它專門用於這類事情 - 繪製CPU使用率,內存使用情況,磁盤使用情況等。有點像MRTG(但MRTG主要是爲了繪製路由器的流量,繪製任何東西,但帶寬與它是非常hackish)

寫Munin插件是非常容易的(這是項目的目標之一)。它們幾乎可以寫入任何東西(shell腳本,perl/python/ruby​​/etc,C,任何可以執行併產生輸出的東西)。插件輸出格式基本上是disc1usage.value 1234。和調試插件是非常容易的(與MRTG相比)

我已經在我的筆記本電腦上設置了它來監控磁盤使用情況,帶寬使用情況(通過從我的ISP控制面板中提取數據,它將我的兩個下載「 「,上傳和新聞組使用情況),加載平均數和進程數。一旦我安裝了它(目前在OS X上稍微有些困難,但是在Linux/FreeBSD上很簡單),我幾分鐘後就寫了一個插件,並且它第一次運行!

我會描述它是如何設置的,但是這個munin站點會做的比我更好!

這裏有一個例子安裝here

一些替代品的Nagios和仙人掌。你也可以使用rrdtool來寫類似的東西。 Munin,MRTG和Cacti基本上都是基於這個圖形工具的遠比較好用的系統。

如果你想獲得真正的,很簡單,你可以做..

import os 
import time 
while True: 
    disc_usage = os.system("df -h/| awk '{print $3}'") 
    log = open("mylog.txt") 
    log.write(disc_usage + "\n") 
    log.close() 
    time.sleep(60*5) 

然後..

f = open("mylog.txt") 
lines = f.readlines() 

# Convert each line to a float number 
lines = [float(cur_line) for cur_line in lines] 

# Get the biggest and smallest 
biggest = max(lines) 
smallest = min(lines) 

for cur_line in lines: 
    base = (cur_line - smallest) + 1 # make lowest value 1 
    normalised = base/(biggest - smallest) # normalise value between 0 and 1 
    line_length = int(round(normalised * 28)) # make a graph between 0 and 28 characters wide 
    print "#" * line_length 

這會讓光盤使用的一個簡單的ASCII圖形。我真的真的不建議你使用這樣的東西。爲什麼?日誌文件將變得更大,更大,更大。該圖將逐漸變慢以進行圖表。 RRDTool使用滾動數據庫系統來存儲它的數據,因此該文件永遠不會超過大約50-100KB,並且由於該文件是固定長度,所以它始終快速地繪製圖形。

總之。如果你想要一些東西來輕鬆繪製幾乎任何東西,請使用munin。如果你想要一些小而獨立的東西,用RRDTool寫一些東西。

1

我想有幾個選項:

  1. 對於純粹的CLI解決方案,請使用諸如gnuplot之類的東西。例如使用here。我因爲我的學生時代還沒有使用的gnuplot :-)

  2. 不是一個真正的純CLI解決方案,但下載的東西像JFreeChart,寫一個簡單的Java應用程序,讀取標準輸入,並創建圖表。

希望這會有所幫助。

4

我們在工作中使用RRDtool(數據存儲後端工具,如MRTG)推出自己的工作。我們每5分鐘運行一次perl腳本,每個分區需要一個du,並將其填充到RRD數據庫中,然後使用RRD的圖形函數來構建圖形。需要一段時間才能確定如何設置.rrd文件(例如,我必須重新學習RPN才能完成一些我想要做的計算),但如果您有一些數據需要隨時間變化, RRD工具是一個很好的選擇。

9

如果某些ASCII字符對您來說足夠「圖形」,我可以推薦ncdu。這是一個非常好的交互式CLI工具,它可以幫助我在不使用cd bigdir的情況下降低大型目錄;一次又一次地重複着。

+0

+1遠程管理的完美增強!喜歡這個工具,超快速的使用和刪除工作流程! – barrymac 2012-03-08 17:40:59

相關問題