Comando per visualizzare l'utilizzo della memoria, l'utilizzo del disco e il caricamento della CPU


16

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?


Assomiglia molto ai compiti. Prendi i dati che ti servono da / proc stesso o da altri comandi, quindi formattali con awk, perl o semplicemente bash.
mikebabcock,

Benvenuti in Unix & Linux Stack Exchange! Ti preghiamo di includere sempre il tuo sistema operativo. Le soluzioni dipendono molto spesso dal sistema operativo in uso. Stai usando Unix, Linux, BSD, OSX, qualcos'altro? Quale versione?
terdon

Grazie ragazzi per il vostro aiuto. Tuttavia, ho ricevuto la mia risposta qui stackoverflow.com/questions/33774260/…
Mohsin Inayat Khan

Risposte:


33

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.



@RahulPatil sembra buono, perché non lo pubblichi?
terdon

3
perché è solo il tuo ans copiato. : D
Rahul Patil,

1
la linea -m libera mi dà un errore, la percentuale non è stata correttamente salvata. ecco come dovrebbe essere:free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'
simon

1
@ user1735921 Fai una domanda . Ma prima, google come memorizzare l'output di un comando in una variabile, è banale. Quindi, spiega cosa vuoi memorizzare e cosa vuoi testare nella domanda.
terdon

5

Controlla in cima .

Leggi questo, https://lwn.net/Articles/387202/

Vedere, inserisci qui la descrizione dell'immagine

Puoi vedere il caricamento di disco / memoria / CPU dalle app:

inserisci qui la descrizione dell'immagine

Ad esempio, l'utilizzo del disco:

inserisci qui la descrizione dell'immagine

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.


2

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


1
Getta nel mio preferito personale, iostat.
mikebabcock,

0

Penso che tu abbia bisogno dell'aiuto di nagios, poiché tutti questi plugin / srcipts per nagios sono già realizzati e puoi scaricare e testare senza l'installazione di nagios.



0

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

-2

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)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.