TOTAL_RAM=`free | head -n 2 | tail -n 1 | awk '{ print $2 }'`; PROC_RSS=`ps axo rss,comm | grep [h]ttpd | awk '{ TOTAL += $1 } END { print TOTAL }'`; PROC_PCT=`echo "scale=4; ( $PROC_RSS/$TOTAL_RAM ) * 100" | bc`; echo "RAM Used by HTTP: $PROC_PCT%"
Команда вычисляет процент использования памяти для определенного процесса и его дочерних процессов.
free
— команда выводит информацию о использовании памяти системой.
head -n 2
— выводит первые две строки вывода команды free
.
tail -n 1
— выводит последнюю строку из двух строк.
awk '{ print $2 }'
— извлекает значение второго столбца из строки.
ps axo rss,comm
— команда выводит информацию о потреблении памяти процессами.
grep [h]ttpd
— фильтрует строки, содержащие «httpd».
awk '{ TOTAL += $1 } END { print TOTAL }'
— суммирует значения первого столбца и выводит их.
echo "scale=4; ( $PROC_RSS/$TOTAL_RAM ) * 100" | bc
— вычисляет процентное соотношение использования памяти.
echo "RAM Used by HTTP: $PROC_PCT%"
— выводит результат в формате «RAM Used by HTTP: X%».
Альтернативой может быть использование утилиты top
с опцией -p
для отслеживания использования памяти определенным процессом.