Я использую 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 в вышеприведенном выводе?
ps
отображает один или другой в зависимости от параметров, которые вы передаете.etimes
вместоetime
и сравните результаты.Ответы:
Согласно стандарту :
Итак, 9 означает дни, верите ли вы в это или нет. Не могли бы вы неверно истолковать вывод htop? Что говорит top (который имеет временной формат
minutes:seconds
)? Вы уверены, что поле, на которое вы смотрите в htop, эквивалентно etime? (например, может это означает 126 минут от процессорного времени?)источник