Используйте 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}'