Как на коленке записывать, сколько памяти занято и чем в Linux

Понадобилось раз в N минут записывать, сколько памяти занято и чем.

Создаем файл /usr/local/bin/memory-monitoring (или другой) и в него записываем:

#!/bin/sh
LC_ALL=C free -m
ps -eo size,pid,user,command --sort -size | awk '{ ms=$1/1024 ; printf("%.1f Mb ",ms) } {print $0}' | head -n 10

Делаем его исполняемым:
chmod +x /usr/local/bin/memory-monitoring

Создаем сервис systemd, записав в файл /etc/systemd/system/memory-monitoring.service:

[Unit]
Description=Log memory usage

[Service]
StandardOutput=journal
StandardError=journal
Type=oneshot
ExecStart=/usr/local/bin/memory-monitoring

Создаем таймер systemd для запуска того сервиса раз в 2 минуты, записав в файл /etc/systemd/system/memory-monitoring.timer:

[Unit]
Description=Log memory usage

[Timer]
OnUnitActiveSec=2minutes
OnBootSec=5minutes

[Install]
WantedBy=timers.target

Включаем таймер:
sudo systemctl enable memory-monitoring.timer

Узнать, работает ли он, когда был в последний раз запущен:
sudo systemctl status memory-monitoring.timer

Первая команда
LC_ALL=C free -m на английском языке выводит, сколько памяти и свопа в мебибайтах занято и свободно, LC_ALL=C задает английский язык для единообразия логов на разных системах для удобства их обработки.

Вторая команда выводит топ 10 процессов по потреблению памяти.

Потом эти записи видны в journalctl --unit=memory-monitoring, в т.ч. с помощью journalctl --unit=memory-monitoring --boot=-N можно отобразить журнал N загрузок системы назад.

Отправить ответ

avatar
  Subscribe  
Сообщать по почте