LINUX.ORG.RU

Получить корректный размер используемой памяти из /proc/meminfo

 , ,


1

2

Приветствую!

Как получить корректный размер используемой памяти из файла /proc/meminfo чтобы он совпадал с размером из htop

Я пробовал:

MemTotal - MemFree

MemTotal - (MemFree + Buffers + Cached)

результат не совпадает. Как правильно высчитать размер?



Последнее исправление: user988 (всего исправлений: 3)
Ответ на: комментарий от infomeh

Про утилиту FREE я знаю. Хочется все таки понять как высчитать из файла meminfo.

user988
() автор топика
Ответ на: комментарий от bowtda
mem=/proc/meminfo; \
cut="cut -c17-24"; \
echo $(($(grep "MemTotal" $mem|$cut)-$(grep "MemFree" $mem|$cut)\
-$(grep "Buffers" $mem|$cut)-$(grep "^Cached" $mem|$cut)\
-$(grep "Slab" $mem|$cut)+$(grep "SUnreclaim" $mem|$cut))); free
bowtda
()
Ответ на: комментарий от bowtda

Мне кажется, или тут изменяющийся выхлоп сравнивается несколько раз со старым? Не надо так делать.

anonymous
()
Ответ на: комментарий от anonymous

А так?

mem=$(mktemp);\
cut="cut -c17-24";\
cat /proc/meminfo > $mem & free;\
echo $(($(grep "MemTotal" $mem|$cut)-$(grep "MemFree" $mem|$cut)\
-$(grep "Buffers" $mem|$cut)-$(grep "^Cached" $mem|$cut)\
-$(grep "Slab" $mem|$cut)+$(grep "SUnreclaim" $mem|$cut))); rm $mem

bowtda
()
Ответ на: комментарий от bowtda

Раз пошла такая пьянка:

declare -A mi; \
while read key value unit; do mi[${key%:}]=$value; done < /proc/meminfo; \
echo $((
  ${mi[MemTotal]}
  - ${mi[MemFree]}
  - ${mi[Buffers]}
  - ${mi[Cached]}
  - ${mi[Slab]}
  + ${mi[SUnreclaim]}
  ))
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.