문제

이 질문에는 누군가 Linux에서 디스크 사용량을 표시하는 방법을 요청했습니다.나는 cli-path에서 한 단계 더 나아가고 싶습니다 ...이전 질문에 대한 합리적인 답변과 같은 출력을 가져와 그래프/차트를 생성하는 쉘 스크립트는 어떻습니까(png 파일 등의 출력)?일반적인 질문에 요청하기에는 코드가 너무 많을 수도 있지만, 누군가가 이미 어딘가에 oneliner를 배치해 놓은 것 같습니다.

도움이 되었습니까?

해결책

나는 추천하고 싶다 무닌.CPU 사용량, 메모리 사용량, 디스크 사용량 등을 그래프로 표시하는 등 정확히 이런 종류의 작업을 위해 설계되었습니다.일종의 MRTG와 유사합니다(그러나 MRTG는 주로 라우터의 트래픽을 그래프로 표시하는 것을 목표로 하며 대역폭 이외의 모든 것을 그래프로 표시하는 것은 매우 해킹적입니다).

Munin 플러그인을 작성하는 것은 매우 쉽습니다(이것이 프로젝트 목표 중 하나였습니다).거의 모든 것(쉘 스크립트, perl/python/ruby/etc, C, 실행하고 출력을 생성할 수 있는 모든 것)으로 작성할 수 있습니다.플러그인 출력 형식은 기본적으로 disc1usage.value 1234.그리고 플러그인 디버깅은 매우 쉽습니다(MRTG에 비해).

디스크 사용량, 대역폭 사용량(ISP의 제어판에서 데이터를 가져와 두 개의 다운로드 "빈", 업로드 및 뉴스그룹 사용량을 그래프로 표시), 로드 평균 및 프로세스 수를 모니터링하기 위해 랩톱에 설정했습니다.일단 설치하고 나면(현재 OS X에서는 약간 어렵지만 Linux/FreeBSD에서는 사소합니다) 몇 분 안에 플러그인을 작성했고 처음으로 작동했습니다!

나는 그것이 어떻게 설정되었는지 설명하고 싶지만, munin 사이트는 내가 할 수 있는 것보다 훨씬 더 잘 해낼 것입니다!

설치예시가 있어요 여기

일부 대안은 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 그래프가 만들어집니다.나 정말 정말 이와 같은 것을 사용하지 않는 것이 좋습니다.왜?로그 파일은 점점 더 커질 것입니다.그래프의 그래프 작성 속도가 점점 느려집니다.RRDTool은 롤링 데이터베이스 시스템을 사용하여 데이터를 저장하므로 파일은 약 50-100KB보다 커지지 않으며 파일이 고정 길이이므로 지속적으로 빠르게 그래프를 작성할 수 있습니다.

요컨대.거의 모든 것을 쉽게 그래프로 표시하려면 다음을 사용하세요. 무닌.더 작고 독립적인 것을 원한다면 RRDTool로 작성하세요.

다른 팁

일부 ASCII 문자가 "그래픽"으로 충분하다면 다음을 추천할 수 있습니다. NCDU.이것은 매우 훌륭한 대화형 CLI 도구로, cd bigdir을 수행하지 않고도 큰 디렉터리를 단계적으로 줄이는 데 많은 도움이 됩니다.du -hs를 계속해서 반복합니다.

우리는 직장에서 다음을 사용하여 스스로 굴렸습니다. RRD도구 (MRTG와 같은 도구에 대한 데이터 저장소 백엔드)우리는 파티션당 du를 가져와 RRD 데이터베이스에 넣은 다음 RRD의 그래프 기능을 사용하여 그래프를 작성하는 Perl 스크립트를 5분마다 실행합니다..rrd 파일을 설정하는 방법을 이해하는 데 시간이 좀 걸리지만(예를 들어 제가 하고 싶었던 일부 계산을 수행하기 위해 RPN을 다시 배워야 했습니다) 시간 경과에 따라 그래프로 표시하고 싶은 데이터가 있는 경우 RRD 도구는 좋은 선택입니다.

나는 몇 가지 옵션이 있다고 생각합니다.

  1. 순수한 CLI 솔루션의 경우 gnuplot과 같은 것을 사용하십시오.보다 여기 예를 들어 사용법.나는 학생 시절부터 gnuplot을 사용하지 않았습니다 :-)

  2. 실제로 순수한 CLI 솔루션은 아니지만 다음과 같은 것을 다운로드하십시오. JFreeChart stdin을 읽고 차트를 생성하는 간단한 Java 앱을 작성하세요.

도움이 되었기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top