메모리 사용, 디스크 사용 및 CPU로드를 다음 형식으로 표시하고 싶습니다.
Memory Usage: 33/512MB (6%)
Disk usage: 4.2/20GB (23%)
CPU Load: 0.01
어떻게해야합니까?
메모리 사용, 디스크 사용 및 CPU로드를 다음 형식으로 표시하고 싶습니다.
Memory Usage: 33/512MB (6%)
Disk usage: 4.2/20GB (23%)
CPU Load: 0.01
어떻게해야합니까?
답변:
이것을 사용해보십시오. 데비안 시스템에서 작동합니다. 세부 사항은 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
위의 스크립트는 /
파티션 의 디스크 사용량을 나타 냅니다. 당신이 원하는 것을 지정하지 않았으므로 그게 당신이 따르는 것 같아요.
free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'
상단을 확인하십시오 .
이것을 읽으십시오, https://lwn.net/Articles/387202/
보다,
앱별로 디스크 / 메모리 / CPU의로드를 볼 수 있습니다.
예를 들어, 디스크 사용량 :
디렉토리 /var/log/atop/
에 통계를 수집하여 하루에 이진 형식 파일로 표시합니다. 매뉴얼 페이지를 읽을 수 있으며 유용한 정보를 추출 할 수있는 방법이 있어야합니다.
특정 형식으로 정확하게 표시하는 명령은 없지만 다음은 기본 값 중 일부를 제공하며 스크립트를 빌드 할 수있는 대안으로 / proc 및 / sys에서 값을 읽을 수도 있습니다.
free
- 빠른 개요
vmstat 1
시스템 성능 I / O 통계 표시
top
동적
htop
상단과 유사
solaris를 사용하는 경우 다음을 확인하십시오. showcpucount를
이렇게하면 코드 작성 방법을 알 수 있습니다.
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
다음을 사용하여 메모리 사용량, 디스크 사용량 및 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)