In this question кто-то попросил способы использования дискового пространства в Linux. Я хотел бы сделать этот шаг дальше по cli-пути ... как насчет сценария оболочки, который выводит результат из чего-то вроде разумного ответа на предыдущий вопрос и генерирует из него график/диаграмму (вывод в png файл или что-то еще)? Это может быть немного слишком много кода, чтобы попросить в очередной вопрос, но я думаю, что кто-то уже имеет Oneliner прокладки вокруг куда-то ...Создание графиков/диаграмм использования диска с использованием только инструментов CLI в Linux
ответ
Я бы порекомендовал 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.
Я предполагаю, что есть несколько вариантов:
Для чистого решения CLI используйте что-то вроде gnuplot. См., Например, использование here. Я не использовал gnuplot со студенческих дней :-)
Не совсем чистое решение для CLI, но загружайте что-то вроде JFreeChart и напишите простое Java-приложение, которое читает stdin и создает диаграмму.
Надеюсь, это поможет.
Мы катались самостоятельно, используя RRDtool (хранилище для хранения данных таких инструментов, как MRTG). Мы запускаем perl-скрипт каждые 5 минут, который занимает один раздел и загружает его в базу данных RRD, а затем использует функцию графа RRD для построения графиков. Требуется некоторое время, чтобы настроить, как настроить файлы .rrd (например, мне пришлось повторно изучить RPN, чтобы выполнить некоторые вычисления, которые я хотел сделать), но если у вас есть данные, которые вы хотите графически отображать с течением времени, Инструмент RRD - хорошая ставка.
Если некоторые символы ASCII являются «графическими» для вас, я могу порекомендовать ncdu. Это очень приятный интерактивный инструмент CLI, который помогает мне много спускать большие каталоги, не делая cd bigdir; du -hs снова и снова.
+1 Идеальное усовершенствование для удаленных du -sh ing! Люблю этот инструмент, очень быстрое использование и удаление рабочих процессов! – barrymac 2012-03-08 17:40:59