메모리 사용량, 디스크 사용량 및 CPU로드를 표시하는 명령


16

메모리 사용, 디스크 사용 및 CPU로드를 다음 형식으로 표시하고 싶습니다.

Memory Usage: 33/512MB (6%)    
Disk usage: 4.2/20GB (23%) 
CPU Load: 0.01

어떻게해야합니까?


숙제처럼 보입니다. / proc 자체 또는 다른 명령에서 필요한 데이터를 가져온 다음 awk, perl 또는 bash로 포맷하십시오.
— mikebabcock

유닉스 및 리눅스 스택 교환에 오신 것을 환영합니다! 제발 항상 당신의 OS를 포함한다. 솔루션은 종종 사용중인 운영 체제에 따라 다릅니다. 유닉스, 리눅스, BSD, OSX 등을 사용하고 있습니까? 어떤 버전?
— terdon

도와 주셔서 감사합니다. 그러나, 나는 여기에 내 대답을 얻었다 stackoverflow.com/questions/33774260/...
— Mohsin 인아 얏 칸에게

답변:


33

이것을 사용해보십시오. 데비안 시스템에서 작동합니다. 세부 사항은 OS에서 사용하는 이러한 도구의 구현에 따라 다를 수 있습니다.

#!/bin/sh
free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'
df -h | awk '$NF=="/"{printf "Disk Usage: %d/%dGB (%s)\n", $3,$2,$5}'
top -bn1 | grep load | awk '{printf "CPU Load: %.2f\n", $(NF-2)}' 

위의 내용을 스크립트로 저장하고 실행하면 (예를 들어 내 시스템에서) 얻을 수 있습니다.

$ ./foo.sh 
Memory Usage: 4986/7994MB (62.37%)
Disk Usage: 23/68GB (35%)
CPU Load: 0.78

위의 스크립트는 /파티션 의 디스크 사용량을 나타 냅니다. 당신이 원하는 것을 지정하지 않았으므로 그게 당신이 따르는 것 같아요.



@RahulPatil은 좋아 보인다, 왜 게시하지 않습니까?
— terdon

3
그것은 단지 당신의 복사 된 ans이기 때문입니다. : D
— Rahul Patil

1
free -m 줄에 오류가 발생하고 백분율이 올바르게 이스케이프되지 않았습니다. 이것은 다음과 같습니다 :free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'
— simon

1
@ user1735921 질문하십시오 . 그러나 먼저 Google은 명령의 출력을 변수에 저장하는 방법을 간단합니다. 그런 다음 질문에 저장할 항목과 테스트하려는 항목을 설명하십시오.
— terdon

5

상단을 확인하십시오 .

이것을 읽으십시오, https://lwn.net/Articles/387202/

보다, 여기에 이미지 설명을 입력하십시오

앱별로 디스크 / 메모리 / CPU의로드를 볼 수 있습니다.

여기에 이미지 설명을 입력하십시오

예를 들어, 디스크 사용량 :

여기에 이미지 설명을 입력하십시오

디렉토리 /var/log/atop/에 통계를 수집하여 하루에 이진 형식 파일로 표시합니다. 매뉴얼 페이지를 읽을 수 있으며 유용한 정보를 추출 할 수있는 방법이 있어야합니다.


2

특정 형식으로 정확하게 표시하는 명령은 없지만 다음은 기본 값 중 일부를 제공하며 스크립트를 빌드 할 수있는 대안으로 / proc 및 / sys에서 값을 읽을 수도 있습니다.

free - 빠른 개요

vmstat 1 시스템 성능 I / O 통계 표시

top 동적

htop 상단과 유사


1
내가 가장 좋아하는 iostat를 던져라.
— mikebabcock

0

nagios의 도움이 필요하다고 생각합니다. nagios의 모든 플러그인 / 서명자가 이미 만들어 졌으므로 nagios 설치없이 다운로드하여 테스트 할 수 있습니다.


0

solaris를 사용하는 경우 다음을 확인하십시오. showcpucount를

이렇게하면 코드 작성 방법을 알 수 있습니다.


블로그가 더 이상 존재하지 않습니다.
— Jay Elston

0

CPU 및 RAM 사용에 대한 코드는 다음과 같습니다.

### 1. get total average CPU usage for the past minute
avg_cpu_use=$(uptime)
# a. split response
IFS=',' read -ra avg_cpu_use_arr <<< "$avg_cpu_use"
# b. find cpu usage
avg_cpu_use=""
for i in "${avg_cpu_use_arr[@]}"; do :
    if [[ $i == *"load average"* ]]; then
        avg_cpu_use=$i
        break       
    fi
done
# c. create response
avg_cpu_use=$(echo ${avg_cpu_use:16})   # Remove "  load average: "
if [[ -z "${avg_cpu_use// }" ]]; then
    avg_cpu_use="CPU: N/A%%"
    exit -1
else
    avg_cpu_use="CPU: ${avg_cpu_use}%%"
fi

### 2. get RAM usage
ram_use=$(free -m)
# a. split response by new lines
IFS=$'\n' read -rd '' -a ram_use_arr <<< "$ram_use"
# b. remove extra spaces
ram_use="${ram_use_arr[1]}"
ram_use=$(echo "$ram_use" | tr -s " ")
# c. split response by spaces
IFS=' ' read -ra ram_use_arr <<< "$ram_use"
# d. get variables
total_ram="${ram_use_arr[1]}"
ram_use="${ram_use_arr[2]}"
# e. create response
ram_use="RAM: ${ram_use}/${total_ram} MB"

echo $avg_cpu_use
echo $ram_use

-2

다음을 사용하여 메모리 사용량, 디스크 사용량 및 CPU로드를 표시 할 수 있어야합니다.

(ps hax -o rss,user | awk '{a[$2]+=$1;}END{for(i in a)print i" "int(a[i]/1024+0.5);}' | sort -rnk2)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.