Ну, я предполагаю, что необходимо было бы смонтировать раздел окон на человечности. Можно найти всестороннее учебное руководство здесь:
Это преобразует первое время в секунды:
ps -p $PROCID -o cputime,etimes | awk -F'[: ]+' '/:/ {t=$3+60*($2+60*$1); print t,$NF}'
В качестве примера команда ps производит:
$ ps -p 5403 -o cputime,etimes
TIME ELAPSED
01:33:38 1128931
Команда awk
обрабатывает это и возвращает:
ps -p 5403 -o cputime,etimes | awk -F'[: ]+' '/:/ {t=$3+60*($2+60*$1); print t,$NF}'
5618 1128931
-F '[:] +'
Это указывает awk обрабатывать двоеточия и пробелы как разделители полей. Таким образом, часы, минуты и секунды отображаются как отдельные поля.
/: / {t = 3 доллара + 60 * (2 доллара + 60 * 1 доллар); print t, $ NF}
Начальное значение /: /
ограничивает работу кода только строками, содержащими двоеточие. Это удаляет строки заголовка. Количество секунд рассчитывается из часов, минут, секунд с помощью t = 3 доллара США + 60 * (2 доллара США + 60 долларов США)
. Результирующее значение для t
затем печатается вместе с истекшим временем.
Если ps
дает дни, часы, минуты, секунды, как в:
2-03:01:33
Затем используйте этот код вместо:
ps -p $PROCID -o cputime,etimes | awk -F'[-: ]+' '/:/ {t=$4+60*($3+60*($2+24*$1)); print t,$NF}'
Если дни могут или не могут быть добавлены к вывод, затем используйте эту комбинированную команду:
ps -p $PROCID -o cputime,etimes | awk -F'[-: ]+' '/:/ && NF==5 { t=$4+60*($3+60*($2+24*$1)); print t,$NF} /:/ && NF==4 {t=$3+60*($2+60*$1); print t,$NF}'
Если вы не хотите использовать awk в игре, используйте решение на чистом bash (t_str содержит сформированную строку, t_sec - время декодирования в секундах):
# Decode the CPU time format [dd-]hh:mm:ss.
IFS="-:" read c1 c2 c3 c4 <<< "$t_str"
if [ -n "$c4" ]
then
t_sec=$((10#$c4+60*(10#$c3+60*(10#$c2+24*10#$c1))))
else
t_sec=$((10#$c3+60*(10#$c2+60*10#$c1)))
fi
Вы не указываете, для какой операционной системы это нужно; если это Linux, и, учитывая, что вы заинтересованы в мониторинге определенного процесса, вам может показаться более целесообразным проанализировать / proc / $ PROCID / stat
- см. proc (5)
для получения подробной информации.