2013-09-15 6 views
0

Мне нужно определить длительный процесс и сохранить pid этого процесса в файл. С помощью следующей команды я могу определить возраст продолжительного процесса. Но после этого я поражен тем, как бороться с PID этого долговременного процесса? Любая помощь приветствуется.Идентифицировать PID долгого процесса

ps -eo pid,etime,cmd | grep DSD.RUN | awk '{print $2}' | ./script.sh | \ 
xargs -I [] bash -c 'if [ "[]" -gt "86400" ]; then echo []; fi' 

Script.sh: (получил это от StackOverflow должности)

#!/bin/bash 
awk -F $':' -f <(cat - <<-'EOF' 
{ 
    if (NF == 2) { 
     print $1*60 + $2 
    } else if (NF == 3) { 
     split($1, a, "-"); 
     if (a[2] > 0) { 
      print ((a[1]*24+a[2])*60 + $2) * 60 + $3; 
     } else { 
      print ($1*60 + $2) * 60 + $3; 
     } 
    } 
} 
EOF 
) < /dev/stdin 

ответ

1

после awk '{print $2}', вы потеряете все, но время, после того, что вы не можете получить ФИД легко больше.

Вместо того, чтобы использовать сценарий AWK для преобразования времени в секундах, вы должны просто использовать etimes, и если вы уже используете AWK, то вы можете просто сделать все в одной строке AWK сценария:

ps -eo pid,etimes,cmd | awk '/DSD\.RUN/ {if ($2 > 86400) {print $1}}' 

Регулярное выражение /DSD\.RUN/ делает следующее действие применительно только к строкам, содержащим DST.RUN.

Смежные вопросы