Понимание формата прошедшего времени ps для длительных процессов

10

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

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

ps -eo etime,command | grep <something to identify a process> | grep -v grep | awk '{print $1}'

Я замечаю, что при коротких процессах значение etime (истекшее время) принимает формат, minutes:secondsи из этого я могу легко определить, как долго выполняется процесс.

Для очень длительных процессов (дней) я не понимаю формат.

У меня есть процесс сервера MySQL, который htopпоказывает, что работает в течение 126 часов.

Выполнение ps -eo etime,command | grep mysql | grep -v grep | awk '{print $1}'дает мне значение 9-03:35:32.

Я думаю, что это означает что-то 9, 3 часа, 35 минут, 32 секунды. Я не могу понять, какие единицы для 9.

Этот процесс длился 126 часов, около 5,25 дней. Это говорит о том, что 9 в приведенном выше выводе не представляют дни. Они также не могут быть полдня, так как (9 * 12) часов + 3 часа + 35 минут + 32 секунды меньше 5 дней.

Как интерпретировать значение истекшего времени, которое я вижу для длительных процессов? Какие единицы сопровождают 9 в вышеприведенном выводе?

Джон Крам
источник
Здесь вы видите формат времени POSIX. Минуты: секунды - это формат времени BSD. Linux psотображает один или другой в зависимости от параметров, которые вы передаете.
Жиль "ТАК - перестать быть злым"
Чтобы перепроверить, попробуйте etimesвместо etimeи сравните результаты.
Руслан

Ответы:

16

Согласно стандарту :

В локали POSIX прошло время с момента запуска процесса в форме:

[[dd-]hh:]mm:ss

где dd представляет количество дней, чч количество часов, мм количество минут и сс количество секунд. Поле dd должно быть десятичным целым числом. Поля hh, mm и ss должны быть двузначными десятичными целыми числами, дополненными слева нулями.

Итак, 9 означает дни, верите ли вы в это или нет. Не могли бы вы неверно истолковать вывод htop? Что говорит top (который имеет временной формат minutes:seconds)? Вы уверены, что поле, на которое вы смотрите в htop, эквивалентно etime? (например, может это означает 126 минут от процессорного времени?)

Random832
источник
Спасибо за подтверждение. htop определенно показывает 126 часов, но я думаю, что это может быть не настенное время, а какое-то другое время (возможно, процессорное время). Поле в htop не эквивалентно etime, я ошибочно предположил здесь.
Джон Крэм
1
@JonCram Ты уверен, что часы? Исходная вершина показывает только минуты (т. Е. До минут больше 60, а не до часов), например 126: 37 означает 126 минут и 37 секунд. Я думал, что Htop может быть таким же. 126 часов процессорного времени за 9 дней - это много.
Random832