Voglio visualizzare l'utilizzo della memoria, l'utilizzo del disco e il carico della CPU nel seguente formato:
Memory Usage: 33/512MB (6%)
Disk usage: 4.2/20GB (23%)
CPU Load: 0.01
Come lo faccio?
Voglio visualizzare l'utilizzo della memoria, l'utilizzo del disco e il carico della CPU nel seguente formato:
Memory Usage: 33/512MB (6%)
Disk usage: 4.2/20GB (23%)
CPU Load: 0.01
Come lo faccio?
Risposte:
Prova questo, funziona sul mio sistema Debian. I dettagli possono variare in base all'implementazione di questi strumenti utilizzati dal sistema operativo:
#!/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)}'
Se salvi quanto sopra come script ed eseguilo, otterrai (esempio dal mio sistema):
$ ./foo.sh
Memory Usage: 4986/7994MB (62.37%)
Disk Usage: 23/68GB (35%)
CPU Load: 0.78
Si noti che lo script sopra sta fornendo l'utilizzo del disco per la /
partizione. Non hai specificato quello che volevi, quindi immagino sia quello che stai cercando.
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 }'
Controlla in cima .
Leggi questo, https://lwn.net/Articles/387202/
Vedere,
Puoi vedere il caricamento di disco / memoria / CPU dalle app:
Ad esempio, l'utilizzo del disco:
in cima alle statistiche raccolte nella directory /var/log/atop/
in file in formato binario al giorno. Potresti leggere una pagina man, ci deve essere un modo per estrarre informazioni utili.
Non c'è un comando per visualizzare esattamente nel tuo particolare formato, ma i seguenti forniscono alcuni dei valori di base, su cui si potrebbe costruire uno script, in alternativa è anche possibile leggere i valori da / proc e / sys.
free
- Veloce panoramica
vmstat 1
mostra le statistiche di I / o sulle prestazioni del sistema
top
dinamico
htop
simile al top
Se stai usando Solaris, dai un'occhiata a: showcpucount
Questo ti darà un'idea di come scrivere il tuo codice.
Ecco il mio codice per ottenere l'utilizzo di CPU e 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
Dovresti essere in grado di visualizzare l'utilizzo della memoria, l'utilizzo del disco e il caricamento della CPU usando:
(ps hax -o rss,user | awk '{a[$2]+=$1;}END{for(i in a)print i" "int(a[i]/1024+0.5);}' | sort -rnk2)