Как проверить, прошло ли прошедшее время 30 минут для процесса - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь убить процесс, время истечения которого превышает 30 минут. Сначала я попытался получить весь pid tomcat и перебрать его, чтобы найти истекшее время.

Я попытался реализовать следующий код, чтобы проверить, нормально ли работает IF Condition

OUTPUT=$(ps |grep tomcat|awk '{print $1}')
OUTPUTARRAY=(${OUTPUT})
for i in "${OUTPUTARRAY[@]}"
do
     etime=$(ps -p $i -o etime |awk '{print $1}')
     echo $etime
     elapsedArray=(${etime})
     elapsed=${elapsedArray[1]}
     if [ $elapsed > "30:00" ]
     then
        echo ${elapsed}
     fi
done

всегдавходя в условие, независимо от того, сколько времени

1 Ответ

0 голосов
/ 01 октября 2019

Вы должны использовать 'etimes' вместо 'etime'. Значение 'etimes' является числовым, в секундах, что облегчает сравнение. Также добавьте завершающий '=' в etimes для удаления заголовка (ELAPSED).

# Inside the for loop:
etimes=$(ps -p "$i" -o etimes=)
if [ "$elapsed" -gt $((30*60)) ] ; then
  ...
fi
...