Próbuję odzyskać używaną pamięć (RAM) w procentach za pomocą poleceń systemu Linux. Mój panel wyświetla Pamięć używaną, którą muszę wyświetlić na określonej stronie internetowej.
Z forów dowiedziałem się, że poprawną pamięć można znaleźć w następujących:
free -m
Wynik:
-/+ buffers/cache: 492 1555
- / + bufory / pamięć podręczna: zawiera prawidłowe użycie pamięci. Nie wiem, jak przeanalizować te informacje lub czy jest jakieś inne polecenie, aby użyć pamięci w procentach.
free | grep Mem | awk '{print $4/$2 * 100.0}'
$ free | awk '/Mem/{printf("used: %.2f%"), $3/$2*100} /buffers\/cache/{printf(", buffers: %.2f%"), $4/($3+$4)*100} /Swap/{printf(", swap: %.2f%"), $3/$2*100}'
Odpowiedzi:
Oto przykładowe wyjście z bezpłatnego:
Pierwszy wiersz
Mem:
list liczb ( )total
pamięćused
pamięćfree
pamięćshared
buffers
cached
)W tej linii
used
znajdują się bufory i pamięć podręczna, a to wpływa na darmo. To nie jest twoja „prawdziwa” wolna pamięć, ponieważ system zrzuci pamięć podręczną, jeśli jest to konieczne, aby spełnić żądania alokacji.Następna linia (
-/+ buffers/cache:
) podaje nam faktycznie używaną i wolną pamięć, tak jakby nie było buforów ani pamięci podręcznej.Ostatnia linia (
Swap
) podaje użycie pamięci wymiany. Nie ma bufora ani pamięci podręcznej do wymiany, ponieważ nie byłoby sensu umieszczać tych rzeczy na dysku fizycznym.Aby wyprowadzić używaną pamięć (bez buforów i pamięci podręcznej), możesz użyć polecenia takiego jak:
Pobiera to trzecią linię i dzieli używane / łącznie * 100.
I dla wolnej pamięci:
źródło
free
,-/+ buffers/cache
jest całkowicie pominięty celowo, a wartość wykazana wused
kolumnie teraz wyklucza buforów i pamięci podręcznej domyślnie. Zobacz tutaj: bugzilla.redhat.com/show_bug.cgi?id=1158828Zamierzam wspomnieć o tym, jak analizować informacje na temat
free
polecenia. Aby znaleźć procent, możesz użyć zgodnie z sugestią w pozostałych 2 odpowiedziach.Wyjaśniono to tutaj wyraźnie . Chciałbym wyjaśnić, co mam w swoim systemie.
Zobaczmy teraz, co tak naprawdę reprezentują różne liczby.
Linia 1
Linia 2
Jak obliczyć wartości 696 i 7173 uzyskane w wierszu 2?
Całkowite zużyte ( 4402 ) - Całkowita pamięć RAM ( 208 ) - Całkowita pamięć RAM do buforowania ( 3497 ) powinna stanowić rzeczywistą pamięć RAM używaną w systemie. Zwraca mi 697, która jest faktycznie wykorzystanym wyjściem RAM w drugim wierszu.
Teraz, Total Available ( 7869 ) - Actual Used ( 696 ) powinien dać ci wolną pamięć, która w tym przypadku wynosi 7173, która jest również pobierana jako wyjście w drugim wierszu.
źródło
Chociaż duplikat, jak wskazał @szboardstretcher, preferuję rozwiązania (w pierwotnym pytaniu) poniżej, szczególnie, że chcesz parsować stronę internetową.
Wydajność:
źródło
used: 96.00%, buffers: 26.53%awk: (FILENAME=- FNR=4) fatal: division by zero attempted
$ cat /etc/issue CentOS release 6.7 (Final)
$ free | awk '/Mem/{printf("used: %.2f%"), $3/$2*100} /buffers\/cache/{printf(", buffers: %.2f%"), $4/($3+$4)*100} /Swap/{printf(", swap: %.2f%"), $3/$2*100}' used: 12.91%, buffers: 96.24%awk: (FILENAME=- FNR=4) fatal: division by zero attempted $ free total used free shared buffers cached Mem: 15429704 1991416 13438288 164 151556 1259584 -/+ buffers/cache: 580276 14849428 Swap: 0 0 0
Dodaje nowy wiersz po numerze zamiany
źródło
Do wersji CentOS 7 Możesz spróbować
aby zobaczyć rzeczywiste wykorzystanie pamięci przez procesy.
źródło