[РЕШЕНО] Время работы программы
Доброго времени суток.
Есть сервак, естественно под Linux'ом. Даже не сервак, а маленькая СуперЭВМ, пара сотен ядер, несколько десятков Гб оперативки.
На этом серваке крутится хитрое ПО для инженерных расчетов. Распараллеливание и все такое.
И захотело наше начальство, внезапно, узнать, сколько времени это самое хитрое ПО реально работает. Там GUI-шный клиент удаленный может запустить сложный расчет по сетке. Клиент, кстати, под "другую ОС".
Так вот, задача - определить время которое процесс с определенным именем реально работал на машине за определенный промежуток времени. Например за месяц, или год.
Задача поставлена так, что можно начинать отслеживание работы с текущего момента. Что можно покрутить в ядре или какие утилиты использовать, чтобы решить задачу с наименьшими потерями?
Все заранее спасибо!
РЕШЕНИЕ - пакет программ sys-process/acct
. Отдельное спасибо товарищам SysA и pascorp за дельные ответы!
- Для комментирования войдите или зарегистрируйтесь
lordalexx написал(а):Доброго
Ну что тут можно сказать, вопрос и правда сложный. Одевайте трусики и идите к гинеколагам.
В безвременный бан отправлен сей персонаж чудный модератором скучным.
.
Коробок-барабок? Дорожка? Синька? Клей? Порно? (или что там ещё так забавно торкает...)
Санитаров в этот тред!..
Мы тоже не всего читали Шнитке!.. © В. Вишневский
Это возможно подойдет
Это возможно подойдет
Правда там находится uptime процесса, а не время когда он, что-то полезное делал.
Спасибо
Спасибо, мне, собственно, uptime и нужен. Ну не буду же я начальству объяснять, что это такое.
Правда, тут есть одна проблема - предложенным способом можно узнать время работы запущенного в данный момент процесса, а если он уже завершен или перезапускался, это не поможет.
Есть, конечно, еще вариант - запустить демона, который будет раз, например, в минуту опрашивать все запущенные процессы и писать в логи факт наличия заданного по имени процесса, но этот вариант мне не нравится... :(
Ладно, будем искать дальше.
Возможно Вам будет проще
Возможно Вам будет проще найти команду запуска нужного процесса и обернуть его в time, а вывод перенаправить в файл, из которого и будете смотреть статистику.
Например:
pas@pas-1G ~ $ time echo "Всякая фигня">>/var/log/time.log
Не забудьте только разобраться с правами для записи лога и исключите time.log из логротатора (что бы файл не затирался внезапно)
Совсем не вариант
Совсем не вариант, а супер кривой костыль с жутким оверхедом!
Открой для себя
GNU system accounting - sys-process/acct
.Только имей ввиду, что статистика показывается только по уже завершенным процессам, поэтому надо будет добавить текущие, как тебе уже подсказали.
ДА!
Да, точно! Я же помнил, что было что-то такое! Гугл не помог, поэтому я решил, что придумал эту штуку.
Спасибо, тебе, дружище, SysA!
Проблему можно считать решенной!
Насчет оверхеда - мы же вроде
Насчет оверхеда - мы же вроде как не в девяностых. Для современного железа скрипт, который выводит список процессов через обращение хоть к тому же ps раз в секунду и составляет таблицу - и минуты одного ядра CPU за сутки не потратит.
Т.е. задача топикстартера решается простейшим скриптом на perl/python/php/любой другой интерпретатор для разбора логов за 10 минут.
Причем, логика этого скрипта будет заведомо более гибкой. Ну, а если захочется оптимизировать, то можно смотреть папку /proc и брать оттуда вообще все, что интересно. И не придется лезть в ядро и включать устаревший "BSD-style process accounting".
Ну да, для админов локалхоста
Ну да, для админов локалхоста - наисовременнейшее решение!
Где уж нам до вас...
Вы хотите сказать, что даже
Вы хотите сказать, что даже моя рабочая станция на порядки производительнее всех серверов под вашим контролем?
Нет, хотел сказать, что мои
Нет, хотел сказать, что мои сервера, в отличие от некоторых, загружены полезной работой, на которую клиенты подписались! ;)