LINUX.ORG.RU

Скрипт - сумма памяти потребляемой стеком LAMP

 ,


0

1

Задача: Написать bash-скрипт который вернет суммарный объем памяти, потребляемый стеком LAMP в данный момент. Есть подопытный сервер: Centos 7.5, Apache, Mariadb, PHP, phpmyadmin.

Опыта почти нет. Гуглю. Буду благодарен за любые подсказки: команды, ключи.

Вывод скрипта должен выглядеть табличкой с колонками и Итого. PID | CMD | KiB Mem

Ещё не понятно какие процессы относятся к стеку LAMP. Вижу процессы httpd (Apache), mysqld (Mariadb). PHP и phpmyadmin как себя проявляют?

# ps -A | grep httpd
 1013 ?        00:00:00 httpd
 1380 ?        00:00:00 httpd
 1381 ?        00:00:00 httpd
 1382 ?        00:00:00 httpd
 1383 ?        00:00:00 httpd
 1384 ?        00:00:00 httpd
 1422 ?        00:00:00 httpd
 1426 ?        00:00:00 httpd
 1427 ?        00:00:00 httpd
 1428 ?        00:00:00 httpd
 1429 ?        00:00:00 httpd
# ps -A | grep mysqld
 1096 ?        00:00:00 mysqld_safe
 1303 ?        00:00:01 mysqld

Каких репозиториев надо подключить, чтобы в Centos memstat установить?

Deleted

Последнее исправление: GoKerze (всего исправлений: 2)

 bc -e $(printf '%s' "`ps axu | grep -e 'mysqld' -e 'httpd' -e 'etc' | tr -s ' ' | cut -d' ' -f4 | sed -e 's/\(.*\)/\1+/' | tr -d '\n' | tr ',' '.'`0") -e quit
IPR ★★★★★
()

У меня LAMP нет, но на примере firefox и evolution. В процентном отношении:

ps -eo %mem,command | awk '/firefox|evolution/ {sum+=$1} END {printf"%d%\n",sum}'

В натуральном выражении:
ps -eo %mem,command | awk '/firefox|evolution/ {sum+=$1} END {printf"%dM\n",16000*sum/100}'

16000 - объем моей ram.

Yorween
()

Не дочитал про таблицы. Не понятно, как ты хочешь получить 1 pid, если может быть несколько процессов. Если без pid, то

for i in firefox evolution; do ps -eo %mem,command | awk -v a="$i" '$2 ~ a {sum+=$1} END {printf"%10s %dKib\n",a,16418140*sum/100}'; done

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

В натуральном выражении

ps -C httpd,mysqld -o pid,rss,cmd | awk '{s+=$2; print} END {print "-\nTotal, kB: " s}'

непонятно, кстати, относятся ли ядро, модули, инит, системд и прочее к L и как их считать?

anonymous
()

Спасибо! (:

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.