この質問では、誰かが Linux でディスクの使用状況を表示する方法を尋ねました。この cli-path をさらに一歩進めたいと思います...前の質問に対する合理的な回答のようなものから出力を取得し、そこからグラフ/チャートを生成するシェルスクリプトはどうですか (png 形式で出力)ファイルか何か)?これは、通常の質問で尋ねるには少し多すぎるコードかもしれませんが、誰かがすでにどこかにワンライナーを置いていると思います...
4 に答える
一部の ASCII 文字が十分に「グラフィカル」である場合は、ncduをお勧めします。これは非常に優れたインタラクティブな CLI ツールであり、 cd bigdir を実行せずに大きなディレクトリを下に移動するのに大いに役立ちます。du -hs 何度も何度も。
muninをお勧めします。これはまさにこの種のことのために設計されています-CPU使用率、メモリ使用率、ディスク使用率などをグラフ化します。MRTGのようなものです(ただし、MRTGは主にルーターのトラフィックをグラフ化することを目的としており、帯域幅以外のものをグラフ化することは非常にハックです)
Muninプラグインの作成は非常に簡単です(これはプロジェクトの目標の1つでした)。それらはほとんど何でも書くことができます(シェルスクリプト、perl / python / ruby / etc、C、実行して出力を生成できるものなら何でも)。プラグインの出力形式は基本的にdisc1usage.value 1234
です。そしてプラグインのデバッグは非常に簡単です(MRTGと比較して)
ラップトップに設定して、ディスク使用量、帯域幅使用量(ISPのコントロールパネルからデータを取得することにより、2つのダウンロード「ビン」、アップロード、ニュースグループの使用量をグラフ化します)、負荷平均、およびプロセス数を監視します。インストールすると(現在、OS Xでは少し難しいですが、Linux / FreeBSDでは簡単です)、数分でプラグインを作成しましたが、初めて機能しました。
それがどのように設定されているかを説明しますが、muninサイトは私ができるよりもはるかにうまくいくでしょう!
ここにインストール例があります
いくつかの選択肢は、nagiosとcactiです。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〜100 KBを超えることはなく、ファイルは固定長であるため、一貫してすばやくグラフ化できます。
要するに。ほとんど何でも簡単にグラフ化できるものが必要な場合は、muninを使用してください。より小さく、自己完結型のものが必要な場合は、RRDToolを使用して何かを記述してください。
私たちはRRDtool(MRTGのようなツールへのデータストレージバックエンド)を使用して仕事で自分自身を転がしました。5分ごとにperlスクリプトを実行します。このスクリプトは、パーティションごとにduを取得し、それをRRDデータベースに詰め込んでから、RRDのグラフ関数を使用してグラフを作成します。.rrdファイルの設定方法を理解するのにしばらく時間がかかります(たとえば、実行したい計算の一部を実行するためにRPNを再学習する必要がありました)が、時間の経過とともにグラフ化するデータがある場合は、 RRDツールは良い賭けです。
私はいくつかのオプションがあると思います:
純粋なCLIソリューションの場合は、gnuplotのようなものを使用します。使用例については、こちらをご覧ください。学生時代からgnuplotを使っていません:-)
純粋なCLIソリューションではありませんが、JFreeChartのようなものをダウンロードして、stdinを読み取り、グラフを作成する単純なJavaアプリを作成してください。
お役に立てれば。