Скрипт или команда для получения потребления памяти пользователем - PullRequest
1 голос
/ 13 сентября 2011

Мой хост предлагает мне ограниченный объем оперативной памяти для моих веб-сайтов, и я хотел бы отслеживать потребление памяти, запустив скрипт в cron.

Я составил эту команду:

ps -u xxxxxx -o rss,command | grep -v peruser | awk '{sum+=$1} END {print sum/1024}'

Но то, как мой хозяин вычисляет память, имеет свою особенность. Он игнорирует процессы, которые выполняются менее 5 минут.

Знаете ли вы о команде или скрипте Python, которые могут показать мне общее количество используемой памяти, игнорируя недолговечные процессы?

1 Ответ

1 голос
/ 13 сентября 2011

Используйте etime, чтобы найти истекшее время процесса. Затем вы можете изменить команду awk, чтобы проверить, превышает ли это время 5 минут.

ps -u xxxxxx -o rss,etime,command | ...

Формат прошедшего времени [[dd-]hh:]mm:ss. Это означает, что время может быть 00:30, 12:57:39 или даже 4-08: 27: 12. Вы можете использовать awk для анализа этого формата времени и преобразования его в секунды. Раз в секунды проверяйте, больше ли это 5 минут, и, если да, добавьте его к промежуточному итогу rss.

Вот пример сценария, который делает это:

ps -u xxxxxx -o rss,etime,command | grep -v peruser | grep -v RSS | sed 's/^ *//g' | awk '{
 split($2,arr,":") #split time on :
 len=0
 for(i in arr) len++ 
 secs=arr[len]+60*arr[len-1] #convert to seconds
 if(len>2) secs=secs+substr(arr[len-2],length(arr[len-2])-1)*60*60

 if(secs>5*60) { #check if more than 5 minutes
     print $0 #print out the process
     sum+=$1 
 }
} END{print "SUM:"sum/1024}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...