Ich möchte die Speicherauslastung, die Festplattenauslastung und die CPU-Auslastung im folgenden Format anzeigen:
Memory Usage: 33/512MB (6%)
Disk usage: 4.2/20GB (23%)
CPU Load: 0.01
Wie mache ich das?
Ich möchte die Speicherauslastung, die Festplattenauslastung und die CPU-Auslastung im folgenden Format anzeigen:
Memory Usage: 33/512MB (6%)
Disk usage: 4.2/20GB (23%)
CPU Load: 0.01
Wie mache ich das?
Antworten:
Versuchen Sie dies, es funktioniert auf meinem Debian-System. Die Details können abhängig von der Implementierung dieser Tools, die Ihr Betriebssystem verwendet, variieren:
#!/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)}'
Wenn Sie das obige Skript speichern und ausführen, erhalten Sie (Beispiel aus meinem System):
$ ./foo.sh
Memory Usage: 4986/7994MB (62.37%)
Disk Usage: 23/68GB (35%)
CPU Load: 0.78
Beachten Sie, dass das obige Skript die Festplattennutzung für die /
Partition angibt. Sie haben nicht angegeben, was Sie wollten, und ich vermute, dass Sie danach suchen.
awk
github.com/rahulinux/scripts/blob/master/sys_info.sh
free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'
Überprüfen Sie oben .
Lesen Sie diese, https://lwn.net/Articles/387202/
Sehen,
Sie können die Auslastung der Festplatte / des Speichers / der CPU anhand der Apps sehen:
Zum Beispiel Datenträgerverwendung:
Oben erfasste Statistiken im Verzeichnis /var/log/atop/
in binär formatierten Dateien pro Tag. Sie könnten eine Manpage lesen, es muss eine Möglichkeit geben, nützliche Informationen zu extrahieren.
Es gibt keinen Befehl, um genau in Ihrem speziellen Format anzuzeigen, aber der folgende gibt einige der Basiswerte an, um die man ein Skript erstellen könnte. Alternativ ist es auch möglich, Werte aus / proc und / sys zu lesen.
free
- Schneller Überblick
vmstat 1
Zeigt die I / O-Statistiken zur Systemleistung an
top
dynamisch
htop
ähnlich wie oben
Wenn Sie Solaris verwenden, lesen Sie Folgendes : showcpucount
Auf diese Weise erhalten Sie eine Vorstellung davon, wie Sie Ihren Code schreiben.
Hier ist mein Code zum Abrufen der CPU- und RAM-Auslastung:
### 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
Sie sollten in der Lage sein, die Speicherauslastung, die Festplattenauslastung und die CPU-Auslastung anzuzeigen, indem Sie Folgendes verwenden:
(ps hax -o rss,user | awk '{a[$2]+=$1;}END{for(i in a)print i" "int(a[i]/1024+0.5);}' | sort -rnk2)