una - Generar gráficos/gráficos de uso de disco con herramientas CLI only en Linux
script gnuplot (4)
En esta pregunta, alguien preguntó cómo mostrar el uso del disco en Linux. Me gustaría dar un paso más en el cli-path ... ¿qué tal un guión de shell que toma el resultado de algo así como una respuesta razonable a la pregunta anterior y genera un gráfico / gráfico de él (salida en png archivo o algo así)? Esto puede ser demasiado código para pedir en una pregunta regular, pero creo que alguien ya tiene un oneliner por ahí ...
Supongo que hay un par de opciones:
Para una solución de CLI pura, use algo como gnuplot. Vea aquí por ejemplo el uso. No he usado gnuplot desde mis días de estudiante :-)
No es realmente una solución de CLI pura, pero descargue algo como JFreeChart y escriba una aplicación Java simple que lea stdin y cree su gráfico.
Espero que esto ayude.
Lanzamos nuestro propio trabajo usando RRDtool (el back-end de almacenamiento de datos para herramientas como MRTG). Ejecutamos un script de Perl cada 5 minutos que toma una du por partición y lo coloca en una base de datos RRD y luego utiliza la función gráfica de RRD para construir gráficos. Me lleva un tiempo definir cómo configurar los archivos .rrd (por ejemplo, tuve que volver a aprender RPN para hacer algunos de los cálculos que quería hacer) pero si tiene algunos datos que desea graficar con el tiempo, La herramienta RRD es una buena apuesta.
Yo recomendaría Munin . Está diseñado exactamente para este tipo de cosas: graficar el uso de la CPU, el uso de la memoria, el uso del disco y demás. algo así como MRTG (pero MRTG tiene como objetivo principal graficar el tráfico del enrutador, graficando cualquier cosa menos el ancho de banda con ella es muy hackish)
Escribir complementos de Munin es muy fácil (era uno de los objetivos del proyecto). Se pueden escribir en casi cualquier cosa (script de shell, perl / python / ruby / etc, C, cualquier cosa que se pueda ejecutar y producir un resultado). El formato de salida del complemento es básicamente disc1usage.value 1234
. Y la depuración de los complementos es muy fácil (en comparación con MRTG)
Lo configuré en mi computadora portátil para monitorear el uso del disco, el uso de ancho de banda (al extraer datos del panel de control de mi ISP, graficar mis dos "contenedores" de descarga, cargas y uso de grupos de noticias), el promedio de carga y el número de procesos. Una vez que lo tengo instalado (actualmente un poco difícil en OS X, pero es trivial en Linux / FreeBSD), escribí un complemento en unos minutos y funcionó, ¡la primera vez!
Describiría cómo está configurado, ¡pero el sitio de Munin lo hará mucho mejor que yo!
Hay una instalación de ejemplo aquí
Algunas alternativas son nagios y cactus. También puede escribir algo similar usando rrdtool. Munin, MRTG y Cacti son básicamente sistemas mucho más fáciles de usar basados en esta herramienta de gráficos.
Si quieres algo realmente, muy simple, podrías 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
Eso hará una gráfica simple del uso del disco. Realmente no te recomiendo que uses algo como esto. ¿Por qué? El archivo de registro se hará más grande, más grande y más grande. El gráfico se volverá progresivamente más lento para graficar. RRDTool utiliza un sistema de base de datos móvil para almacenar sus datos, por lo que el archivo nunca superará los 50-100 KB, y es siempre rápido de graficar ya que el archivo tiene una longitud fija.
En breve. Si quieres algo para graficar fácilmente casi cualquier cosa, usa munin . Si quieres algo más pequeño y autónomo, escribe algo con RRDTool.
Si algunos caracteres ASCII son lo suficientemente "gráficos" para usted, puedo recomendar ncdu . Es una herramienta de CLI interactiva muy agradable, que me ayuda mucho a bajar directorios grandes sin hacer cd bigdir; du -hs una y otra vez.