Еще раз - вопрос не в скрипте, а в том что именно написано в выводе команды. Что означают столбцы VIRT, RES, SHR
Виктор, вот смотри - у нас три столбца отвечают за память. VIRT, RES, SHR.
Смотрим вывод top:
top - 23:41:11 up 10 days, 7:16, 1 user, load average: 0.06, 0.10, 0.09
Tasks: 156 total, 1 running, 155 sleeping, 0 stopped, 0 zombie
Cpu(s): 2.0%us, 6.4%sy, 11.1%ni, 79.2%id, 0.7%wa, 0.0%hi, 0.0%si, 0.7%st
Mem: 1020348k total, 955032k used, 65316k free, 49944k buffers
Swap: 2097148k total, 18864k used, 2078284k free, 511452k cached
Да у нас вся оперативка забита! Еще и в своп немного залезли. Где тут место еще и для графита ?! Нету!
Сложим цифры по столбцу RES:
[root@monitor ~]# ps aux | awk '{s+=$6; } END {print s}'
424460
Хм, а занято-то всего 414 метра! Гуляем - еще полгига свободных.
[root@monitor ~]# free -m
total used free shared buffers cached
Mem: 996 931 65 0 48 498
-/+ buffers/cache: 383 612
Swap: 2047 18 2029
Вывод free -m вообще говорит, что у нас 612 метров свободны!
Но я не могу понять - цифры в 414 Мб я вообще не нахожу.
Итого вопрос - как правильно прочитать значения в выводах команд top, ps, free - сколько же реально оперативки свободно ? Как понять - какие процессы отъедают память ? Какие столбы из VIRT, RES, SHR надо читать и как их правильно интерпретировать ?
За htop огромное спасибо! Похоже, оно действительно показывает реальные потребности в памяти! Спасибо огромное, БТР!