Polecenie wyświetlania zużycia pamięci, zużycia dysku i obciążenia procesora

16

Chcę wyświetlić użycie pamięci, zużycie dysku i obciążenie procesora w następującym formacie:

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

Jak mogę to zrobić?

Prem
źródło
Wygląda jak praca domowa. Chwyć potrzebne dane z samego / proc lub z innych poleceń, a następnie sformatuj je za pomocą awk, perl lub po prostu bash.
mikebabcock
Witamy w wymianie stosów Unix i Linux! Należy zawsze podać swój system operacyjny. Rozwiązania bardzo często zależą od używanego systemu operacyjnego. Czy korzystasz z Uniksa, Linuksa, BSD, OSX, czy czegoś innego? Która wersja
terdon
Dzięki chłopaki za pomoc. Jednak otrzymałem tutaj swoją odpowiedź stackoverflow.com/questions/33774260/…
Mohsin Inayat Khan

Odpowiedzi:

33

Wypróbuj to, działa na moim systemie Debian. Szczegóły mogą się różnić w zależności od implementacji tych narzędzi używanych przez system operacyjny:

#!/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)}' 

Jeśli zapiszesz powyższe jako skrypt i uruchom go, otrzymasz (przykład z mojego systemu):

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

Zauważ, że powyższy skrypt podaje użycie dysku dla /partycji. Nie określiłeś, co chcesz, więc zgaduję, że o to ci chodzi.

terdon
źródło
1
Próbowałem tylko z awk github.com/rahulinux/scripts/blob/master/sys_info.sh
Rahul Patil
@RahulPatil wygląda dobrze, dlaczego go nie opublikujesz?
terdon
3
bo to tylko twoje skopiowane ans. : D
Rahul Patil
1
linia free -m powoduje błąd, wartość procentowa nie została poprawnie zmieniona. tak powinno być:free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'
simon
1
@ user1735921 Zadaj pytanie . Ale najpierw Google, jak przechowywać dane wyjściowe polecenia w zmiennej, co jest trywialne. Następnie wyjaśnij w pytaniu, co chcesz przechowywać i co chcesz przetestować.
terdon
5

Sprawdź na szczycie .

Przeczytaj to, https://lwn.net/Articles/387202/

Widzieć, wprowadź opis zdjęcia tutaj

Możesz zobaczyć obciążenie dysku / pamięci / procesora przez aplikacje:

wprowadź opis zdjęcia tutaj

Na przykład użycie dysku:

wprowadź opis zdjęcia tutaj

na szczycie zebrane statystyki w katalogu /var/log/atop/w plikach binarnych dziennie. Możesz przeczytać stronę podręcznika, musi istnieć sposób na wydobycie użytecznych informacji.

użytkownik2496
źródło
2

Nie ma polecenia wyświetlanego dokładnie w twoim konkretnym formacie, ale poniżej podano niektóre wartości podstawowe, na których można zbudować skrypt, jako alternatywę można również odczytać wartości z / proc i / sys.

free - szybki przegląd

vmstat 1 pokazuje statystyki we / wy wydajności systemu

top dynamiczny

htop podobny do góry

X Tian
źródło
1
Wrzuć mój osobisty faworyt, iostat.
mikebabcock
0

Myślę, że potrzebujesz pomocy nagios, ponieważ wszystkie te wtyczki / części dla nagios są już zrobione i możesz je pobierać i testować bez instalacji nagios.

klerk
źródło
0

Jeśli używasz solaris, sprawdź to: showcpucount

To da ci wyobrażenie, jak zacząć pisać kod.

vikkp
źródło
Blog już nie istnieje.
Jay Elston,
0

Oto mój kod do obliczania zużycia procesora i pamięci 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
Xinthose
źródło
-2

Powinieneś być w stanie wyświetlić użycie pamięci, użycie dysku i obciążenie procesora za pomocą:

(ps hax -o rss,user | awk '{a[$2]+=$1;}END{for(i in a)print i" "int(a[i]/1024+0.5);}' | sort -rnk2)
Abhijeet Petkar
źródło