Определите процессы, выполняющиеся более 3 часов в linux - PullRequest
0 голосов
/ 26 марта 2020

Я хочу узнать, какие процессы выполняются более 3 часов, я написал для этого команду, но она не возвращает ожидаемый результат

ps -u <user> -o pid,stime,pcpu,pmem,etime,cmd --sort=start_time | \
    grep <searchString> | grep -v grep| awk '{print $5}' | \
        sed 's/:|-/ /g;'| awk '{print $4" "$3" "$2" "$1"}' | \
            awk '$1+$2*60+$3*3600+$4*86400 > 10800' 

, но выводит значения etime в вывод. Но ожидаемый результат: команда должна вывести значения «pid, stime, pcpu, pmem, etime, cmd»

Я не могу найти точную проблему с этим.

Ответы [ 2 ]

1 голос
/ 26 марта 2020

Вы выполняете "awk '{print $ 5}'", который принимает на входе и печатает только столбец 5, который в вашем случае - "etime", с этого момента все потеряно.

Если ваша система поддерживает etimes (обратите внимание на s на конце), вы можете легко сделать это с помощью

ps -eo pid,etimes,etime,comm,user,tty | awk '{if ( $2>10800) print $0}' 

в системе, не поддерживающей etimes, которая имеет стандартный вывод etime, например, чч: мм: сс или просто мм: сс, если не прошло ни одного часа

ps -eo pid,etime,comm,user,tty | awk '{seconds_old=10800 ; split($2,a,":",sep)  ; if(length(a) < 3)  b = (a[1] *60) + (a[2]) ; else  b=((a[1]*3600) + (a[2] *60) + (a[3])) ; if(b > seconds_old ) print $0}'

Настройте «seconds_old», чтобы изменить возраст, для которого вы хотите проверить:

Существуют различные другие способы сделать это, используя Find, например: объяснено здесь: https://serverfault.com/questions/181477/how-do-i-kill-processes-older-than-t

Однако решение должно соответствовать ожидаемому результату

0 голосов
/ 26 марта 2020

Попробуйте:

ps -u <user> -o pid,stime,pcpu,pmem,etime=,cmd --sort=start_time|grep <searchString>|while read z;do tago=$(echo $z|awk '{print $5}'|sed -E 's/(:|-)/ /g'| awk '{print $4+$3*60+$2*3600+$1*86400}');if [ $tago -ge 10800 ];then echo $z;fi;done

Он печатает только процессы >= 10800 сек. Вы можете перенастроить вывод в соответствии с вашими потребностями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...