Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Системное программирование > получить время работы процесса |
Автор: debugg 27.8.2007, 11:07 |
У меня такая проблема. Хочу узнать сколько времени проработал определенный процесс и если время больше заданного вырубить его. Задача вроде бы тривиальная и должна много где использоваться хотя в сети найти ничего стоящего не могу. Процессы по заданному условию я отловил используя псевдо-файловую систему /proc. Там у каждого процесса есть дерриктория в которой лежит файлик stat содержащий все необходимые данные. Вот вопрос как определить какие из этих цифр являються временем работы процесса. Конкретно мне нужно поле START которое выводиться при комманде PS -eux, вернее его данные. Если кто сталкивался помогите плз... |
Автор: amg 27.8.2007, 14:42 | ||
Можно, конечно, самому парсить /proc, но проще воспользоваться готовым модулем. Например
|
Автор: debugg 27.8.2007, 15:08 |
эх если бы был Proc::ProcessTable был бы рай )) у нас на фирме очень строго с подключением чего бы то ни было нового (( но все равно спасибо! |
Автор: amg 28.8.2007, 12:44 | ||
Совсем несложно и /proc пропарсить. Надо только внимательно читать man proc. Вот:
|
Автор: debugg 28.8.2007, 12:54 |
да спасибо большое все починил!!! проблема была где взять данные Добавлено через 5 минут и 11 секунд starttime - proc/pid/stat элемент номер [21] ) boottime - proc/stat - btime ну и время сейчас time еще! нужно обязательно поделить starttiime на hz если не вдаваться в подробности то на 100 формула для вычисления времени работы процесса получаеться time_work_proc = time - boottime+(starttime/100) |
Автор: amg 28.8.2007, 15:13 |
debugg, формула то неправильная. Там "-" вместо "+" должен быть. |
Автор: debugg 28.8.2007, 15:17 | ||||
нет там все правильно starttime - это время прошедшее от старта системы ДО запуска процесса |
Автор: amg 28.8.2007, 15:38 | ||
Именно так. man proc:
|