2008-09-02 10 views
9

In this question кто-то попросил способы использования дискового пространства в Linux. Я хотел бы сделать этот шаг дальше по cli-пути ... как насчет сценария оболочки, который выводит результат из чего-то вроде разумного ответа на предыдущий вопрос и генерирует из него график/диаграмму (вывод в png файл или что-то еще)? Это может быть немного слишком много кода, чтобы попросить в очередной вопрос, но я думаю, что кто-то уже имеет Oneliner прокладки вокруг куда-то ...Создание графиков/диаграмм использования диска с использованием только инструментов CLI в Linux

ответ

6

Я бы порекомендовал munin. Он предназначен для такого рода вещей: графического использования ЦП, использования памяти, использования диска и т. Д. вроде MRTG (но MRTG в первую очередь нацелен на графическое отображение трафика маршрутизатора, графическое отображение чего угодно, но пропускная способность с ним очень хаки)

Написание плагинов Munin очень просто (это был один из целей проекта). Они могут быть написаны почти во всех (сценарий оболочки, perl/python/ruby ​​/ etc, C, все, что можно выполнить и произвести вывод). Формат выходного сигнала плагина в основном равен disc1usage.value 1234. И отладка плагинов очень проста (по сравнению с MRTG)

Я установил его на свой ноутбук, чтобы отслеживать использование диска, использование полосы пропускания (путем вытаскивания данных с панели управления моего интернет-провайдера, графики для моих двух загрузочных бункеров) ", загрузка и использование групп новостей), средняя загрузка и количество процессов. Как только я его установил (в настоящее время немного сложнее в OS X, но это тривиально для Linux/FreeBSD), я написал плагин через несколько минут, и он сработал в первый раз!

Я бы описал, как он настроен, но сайт мунина сделает это намного лучше, чем я мог!

Там пример установки 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 использования диска. I действительно действительно не рекомендую использовать что-то вроде этого. Зачем? Файл журнала будет больше, и больше, и больше. График будет постепенно уменьшаться до графика. RRDTool использует систему подвижной базы данных для хранения своих данных, поэтому файл никогда не будет больше, чем около 50-100 КБ, и он будет быстро скорректировать график, поскольку файл является фиксированной длиной.

Вкратце. Если вы хотите что-то легко нарисовать почти все, используйте munin. Если вы хотите что-то меньшее и самодостаточное, напишите что-нибудь с RRDTool.

1

Я предполагаю, что есть несколько вариантов:

  1. Для чистого решения CLI используйте что-то вроде gnuplot. См., Например, использование here. Я не использовал gnuplot со студенческих дней :-)

  2. Не совсем чистое решение для CLI, но загружайте что-то вроде JFreeChart и напишите простое Java-приложение, которое читает stdin и создает диаграмму.

Надеюсь, это поможет.

4

Мы катались самостоятельно, используя RRDtool (хранилище для хранения данных таких инструментов, как MRTG). Мы запускаем perl-скрипт каждые 5 минут, который занимает один раздел и загружает его в базу данных RRD, а затем использует функцию графа RRD для построения графиков. Требуется некоторое время, чтобы настроить, как настроить файлы .rrd (например, мне пришлось повторно изучить RPN, чтобы выполнить некоторые вычисления, которые я хотел сделать), но если у вас есть данные, которые вы хотите графически отображать с течением времени, Инструмент RRD - хорошая ставка.

9

Если некоторые символы ASCII являются «графическими» для вас, я могу порекомендовать ncdu. Это очень приятный интерактивный инструмент CLI, который помогает мне много спускать большие каталоги, не делая cd bigdir; du -hs снова и снова.

+0

+1 Идеальное усовершенствование для удаленных du -sh ing! Люблю этот инструмент, очень быстрое использование и удаление рабочих процессов! – barrymac 2012-03-08 17:40:59