Pregunta

En esta pregunta alguien le preguntó por formas de mostrar el uso de disco en Linux.Me gustaría dar un paso más abajo en la cli de la ruta...cómo sobre un script de shell que lleva a la salida de algo así como una razonable respuesta a la pregunta anterior y genera un cuadro/gráfico de él (de salida en un archivo png o algo)?Esto puede ser un poco demasiado código para pedir en una pregunta, pero mi conjetura es que hay alguien que ya tiene un oneliner por ahí, en algún lugar...

¿Fue útil?

Solución

Yo recomendaría munin.Está diseñado para este tipo de cosas - representación gráfica de uso de CPU, uso de memoria, disco-uso y tal.algo así como MRTG (pero MRTG principalmente dirigida a la representación gráfica del router de tráfico, la representación de cualquier cosa, pero el ancho de banda con que es muy hackish)

Escrito Munin plugins es muy fácil (que era uno de los objetivos del proyecto).Se pueden escribir en casi cualquier cosa (shell script, perl/python/ruby/etc, C, cualquier cosa que se pueda ejecutar y producir una salida).El plugin formato de salida es básicamente disc1usage.value 1234.Y depuración de los plugins es muy fácil (en comparación con MRTG)

Lo he configurado en mi ordenador portátil para el monitor de disco de uso, uso de ancho de banda (tirando de datos de mi proveedor del panel de control, gráficos de mis dos descarga "papeleras", las cargas y los grupos de noticias de uso), la carga promedio y el número de procesos.Una vez que lo tengo instalado (en la actualidad un poco difícil en OS X, pero es trivial en Linux/FreeBSD), yo había escrito un plugin en un par de minutos, y funcionó a la primera!

Me gustaría describir cómo es la configuración, pero el munin sitio hará que mucho mejor que pude!

Hay un ejemplo de una instalación aquí

Algunas alternativas son nagios y cacti.Usted podría también escribir algo similar con rrdtool.Munin, MRTG y Cactus son, básicamente, todos los lo-mejor-para-usar sistemas basados en torno a esta herramienta de gráficos.

Si quieres algo realmente simple, se puede hacer..

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)

Entonces..

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

Que voy a hacer una simple ascii gráfico del disco de uso.Yo realmente no se recomienda el uso de algo como esto.Por qué?El archivo de registro se hará más grande, y más grande, y más grande.El gráfico que se obtiene progresivamente más lento gráfico.RRDTool utiliza un rodillo-sistema de base de datos para almacenar sus datos, por lo que el archivo nunca van a llegar a más de 50-100 KB, y es siempre rápido a un gráfico como el archivo es de una longitud fija.

En el corto plazo.Si quieres algo fácilmente gráfico casi nada de uso munin.Si quieres algo más pequeño y autónomo, escribir algo con RRDTool.

Otros consejos

Si algunos caracteres ASCII son "gráfica" es suficiente para ti, que me puede recomendar ncdu.Es un sitio muy agradable interactivo CLI herramienta, que me ayuda mucho con el paso de grandes directorios sin hacer cd bigdir ;du -hs una y otra vez.

Desarrollamos nuestro propio trabajo usando RRDtool (el almacenamiento de datos back-end para herramientas como MRTG).Tenemos que ejecutar un script en perl que cada 5 minutos que tarda una súplica por partición y los mete en una base de datos RRD y, a continuación, utiliza RRD gráfico de la función para construir los gráficos.Se toma un tiempo para configurar cómo establecer el .ficheros rrd (por ejemplo, tuve que volver a aprender RPN para hacer algunos de los cálculos que yo quería hacer), pero si usted tiene algunos datos que desee para el gráfico a lo largo del tiempo, RRD herramienta es una buena apuesta.

Supongo que hay un par de opciones:

  1. Para una pura CLI solución, usar algo como gnuplot.Ver aquí por ejemplo, el uso de.No he utilizado gnuplot desde mis días de estudiante :-)

  2. No es realmente un puro CLI solución, pero la descarga algo como JFreeChart y escribir una sencilla aplicación Java que lee de stdin y crea tu gráfico.

Espero que esto ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top