Я использовал top
для просмотра использования памяти в данный момент. Но я хотел бы отслеживать использование памяти в течение определенного периода времени. Например, запустить мониторинг, затем выполнить несколько команд, а затем остановить мониторинг и посмотреть, сколько памяти было использовано за этот период.
Как я могу сделать это на Ubuntu Server?
Думаю, я могу запускать cronjob каждые 5 секунд или около того, и вызывать команду, которая записывает текущее использование памяти в текстовый файл. Но какую команду я должен использовать, чтобы получить текущее использование памяти в формате, удобном для записи в текстовый файл?
Я рекомендую объединить предыдущие ответы
watch -n 5 free -m
Обратите внимание, что Linux любит использовать любую дополнительную память для кэширования блоков жесткого диска. Поэтому вы не хотите смотреть только на свободную Mem
. Вы хотите посмотреть на свободный
столбец строки -/+ буферы/кэш:
. Это показывает, сколько памяти доступно приложениям. Поэтому я просто запустил free -m
и получил следующее:
total used free shared buffers cached
Mem: 3699 2896 802 0 247 1120
-/+ buffers/cache: 1528 2170
Swap: 1905 62 1843
Я знаю, что я использую 1528 МБ и имею 2170 МБ свободной памяти.
Примечание: Чтобы остановить этот часовой
цикл, вы можете просто нажать Ctrl+C.
Я думаю, что при
- лучшее решение.
судо apt-получить установку при
Таким образом, Вы заметите, какие программы используются наиболее оперативной памяти. и вы можете легко завершить, если вы хотите. Здесь'ы скриншот!
Если вы ищете хороший расстройство памяти, используемый каждым запущенным процессом, то я бы порекомендовал проверить ps_mem.py (найти здесь в pixelbeat.org).
Я знаю, что в комментариях выше, вы упомянули, желая одного-линии снимка от **** бесплатно, но я полагал, что другие могут найти это полезным.
Пример вывода:
user@system:~$ sudo ps_mem.py
[sudo] password for user:
Private + Shared = RAM used Program
4.0 KiB + 7.5 KiB = 11.5 KiB logger
4.0 KiB + 8.0 KiB = 12.0 KiB mysqld_safe
4.0 KiB + 10.0 KiB = 14.0 KiB getty
4.0 KiB + 42.0 KiB = 46.0 KiB saslauthd (5)
48.0 KiB + 13.0 KiB = 61.0 KiB init
56.0 KiB + 27.5 KiB = 83.5 KiB memcached
84.0 KiB + 26.5 KiB = 110.5 KiB cron
120.0 KiB + 50.0 KiB = 170.0 KiB master
204.0 KiB + 107.5 KiB = 311.5 KiB qmgr
396.0 KiB + 94.0 KiB = 490.0 KiB tlsmgr
460.0 KiB + 65.0 KiB = 525.0 KiB rsyslogd
384.0 KiB + 171.0 KiB = 555.0 KiB sudo
476.0 KiB + 83.0 KiB = 559.0 KiB monit
568.0 KiB + 60.0 KiB = 628.0 KiB freshclam
552.0 KiB + 259.5 KiB = 811.5 KiB pickup
1.1 MiB + 80.0 KiB = 1.2 MiB bash
1.4 MiB + 308.5 KiB = 1.7 MiB fail2ban-server
888.0 KiB + 1.0 MiB = 1.9 MiB sshd (3)
1.9 MiB + 32.5 KiB = 1.9 MiB munin-node
13.1 MiB + 86.0 KiB = 13.2 MiB mysqld
147.4 MiB + 36.5 MiB = 183.9 MiB apache2 (7)
---------------------------------
208.1 MiB
=================================
Private + Shared = RAM used Program
Единственная часть, которую я не'т нравится, так это то, что скрипт утверждает, требуют привилегий суперпользователя. Я еще'т получил возможность еще точно понять, почему это так.
Используйте команду free.
Например, вот результат команды free -m
:
total used free shared buffers cached
Mem: 2012 1666 345 0 101 616
-/+ buffers/cache: 947 1064
Swap: 7624 0 7624
free -m | grep /+
вернет только вторую строку:
-/+ buffers/cache: 947 1064
Вы можете сделать это с помощью кошка /proc/meminfo
.
MemTotal: 4039160 kB
MemFree: 309796 kB
MemAvailable: 3001052 kB
Buffers: 345636 kB
Cached: 2341288 kB
SwapCached: 8 kB
Active: 1725160 kB
Inactive: 1551652 kB
Active(anon): 538404 kB
Inactive(anon): 70076 kB
Active(file): 1186756 kB
Inactive(file): 1481576 kB
Unevictable: 32 kB
Mlocked: 32 kB
SwapTotal: 4194300 kB
SwapFree: 4194044 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 589988 kB
Mapped: 255972 kB
Shmem: 18596 kB
Slab: 374888 kB
SReclaimable: 310496 kB
SUnreclaim: 64392 kB
KernelStack: 6976 kB
PageTables: 26452 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 6213880 kB
Committed_AS: 3589736 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
CmaTotal: 0 kB
CmaFree: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 147392 kB
DirectMap2M: 4046848 kB
Для визуального контроля общего использования оперативной памяти, если вы используете Бебу, он будет держать ваш памяти в правом нижнем углу терминала и будет работать, пока вы находитесь в любой терминальной сессии.
Как вы можете видеть из скриншота, моя виртуальная машина имеет аптайм 1h3m, 0.00 нагрузки, имеет процессор с тактовой частотой 2,8 ГГц (виртуальной) и 994MB (21%) ОЗУ, доступного в системе.
Единое решение и выход:
free -m | grep "Mem:"
Вот пример ожидаемого выхода:
Mem: 3944 652 302 18 2990 2930
Я хотел бы использовать кактусы. Это график использования памяти и т. д. В течение определенного периода времени, и вы сможете проверить на использование через веб-браузер.
Мониторинг Использования Памяти
Я'м больше, в соответствии с одним из предыдущих постов, что упомянутые кактусы как отличный способ для мониторинга использования памяти. Однако, так как оказалось, кактусы уже не популярен в мейнстриме, существует альтернатива применение графиков под названием Graphite.
Графит является относительно легко установить на сервер Ubuntu и, чтобы установить его, вы можете проверить эту ссылку]1 Для легко следовать процедуре установки.
После графита была установлена, теперь вы можете отправить показатели памяти к нему, в зависимости от того интервала, который вы хотите; каждые 5 секунд, каждую минуту, каждый час...и т. д.
На графике показатели памяти, как уже отмечалось в предыдущих постах, вы можете написать свой собственный сценарий, используя системные инструменты для сбора необходимой информации память. Или, вы можете использовать заготовки плагин SNMP, который'сделаем всю работу за вас.
Если вы хотите написать свой собственный скрипт, он'll быть мудрым, чтобы обеспечить вам счет на буфер и кэш-памяти при расчете используемой памяти, в противном случае, вы'll итоге сбор ложные сведения.
Если вы хотите использовать плагин SNMP, который уже делает все необходимые расчеты для вас, здесь'ы ссылку на тот, который работает очень хорошо: checkMemoryviaSNMP.
Плюсы СНМП:
У меня есть SNMP, установленные на всех удаленных узлов монитора. Это позволяет мне контролировать все свои системы от один центральный сервер(ы), без необходимости копирования или поставить плагин на удаленных узлах.
Минусы СНМП:
Вы'd должны обеспечить SNMP-агент устанавливается на каждом из удаленных узлов, который вы хотите контролировать память. Однако, эта установка будет разовая сделка. Если вы're с помощью средств автоматизации, таких как Chef или Puppet или подобные инструменты в своей среде, то это вовсе'т проблема.
Конфигурация SNMP агента на удаленном узле(ы):
После SNMP-агент был установлен, просто ви в /etc/snmpd будет/snmpd будет.файл conf и добавьте в него:
rocommunity (specify-a-community-string-aka-password-here)
Затем перезапустите агент snmpd будет с:
/etc/init.d/snmpd restart
Затем, на центральный сервер, который вместо вас отслеживать все ваши другие сервера, вы можете запустить следующую команду:
$ time ./checkMemoryviaSNMP -v2 public gearman001.phs.blah.com 30 90 graphite,10.10.10.10,2003,typical
WARNING: Used = [ 3.26154 GB ], Installed = [ 5.71509 GB ], PCT.Used = [ 57.069% ], Available.Memory = [ 2.00291 GB ]. Buffer = [ 137.594 MB ], Cached = [ 1.3849 GB ]. Thresholds: [ W=(30%) / C=(90%) ]. System Information = [ Linux gearman001.phs.blah.com 2.6.32-504.30.3.el6.x86_64 #1 SMP Thu Jul 9 15:20:47 EDT 2015 x86_64 ].
real 0m0.23s
user 0m0.03s
sys 0m0.02s