- Как узнать время работы процесса в Linux
- 5 ответов
- Как узнать время запуска долго работающего процесса Linux? [закрыто]
- [C][Unix]Время старта процесса
- Re: [C][Unix]Время старта процесса
- Re: [C][Unix]Время старта процесса
- Re: [C][Unix]Время старта процесса
- Re: [C][Unix]Время старта процесса
- Re: [C][Unix]Время старта процесса
- Re: [C][Unix]Время старта процесса
- Re: [C][Unix]Время старта процесса
- Re: [C][Unix]Время старта процесса
- Re: [C][Unix]Время старта процесса
- Как найти время выполнения команды или процесса в Linux
- Найти время выполнения команды или процесса в Linux
- time и /usr/bin/time
- Краткое введение в программу «GNU time»
- How to get the start time of a long-running Linux process?
- 7 Answers 7
Как узнать время работы процесса в Linux
Как узнать аптайм данного процесса в Linux.
дает мне много информации, которая включает в себя время, когда процесс был запущен.
Я специально ищу switch, который возвращает время работы процесса в миллисекундах.
5 ответов
как «uptime» имеет несколько значений, вот полезная команда.
эта команда выводит список всех процессов с несколькими различными столбцами, связанными со временем. Он имеет следующие столбцы:
PID = идентификатор процесса
первый COMMAND = только имя команды без параметров и без аргументов
STARTED = абсолютное время начала процесса
ELAPSED = время, прошедшее с момента запуска процесса (времени), формат [[dd-]hh:]mm: ss TIME = накопительное время процессора,» [dd-]hh:mm:ss » формат
second COMMAND = снова команда, на этот раз со всеми предоставленными параметрами и аргументами
если у вас есть ограниченная версия ps таких как находится в busybox , вы можете получить время запуска процесса, глядя на метку /proc/
. Например, если pid, который вы хотите посмотреть, 55.
. а затем сравнить его с текущей датой.
Я думаю, что вы можете просто запустить:
пример с двумя процессами, запущенными в один и тот же час минуты секунды, но не те же миллисекунды:
такая простая вещь не правильно ответил после 5 лет?
Я не думаю, что вы можете точно сделать миллисекунд. напр. если вы видите Man procfs и видите /proc / $$ / stat, который имеет поле 22 как startime, которое находится в «Clock ticks», у вас будет что-то более точное, но тики часов не собираются с совершенно постоянной скоростью (относительно «настенного времени») и будут выключены. сон и некоторые вещи (ntpd, я думаю) компенсируют это. Например, на машине, работающей под управлением ntpd, с 8 днями uptime и никогда не спал, dmesg-T имеет ту же проблему (я думаю. ), и вы можете увидеть его здесь:
Да, слишком старые и слишком сложные вещи. Я попытался с выше предложенным методом «stat», но что, если бы у меня было»прикосновение» -ed PID proc dir вчера? Это означает, что мой летний процесс показан со вчерашней отметкой времени. Нет, не то, что мне нужно: (
в более новых, это просто:
как просто. Время присутствует в секундах. Делайте все, что вам нужно. С некоторыми старыми коробками ситуация сложнее, так как нет времени. Можно рассчитывать on:
которые выглядят «немного» странно, так как он находится в формате dd-hh:mm:ss. Не подходит для дальнейшего расчета. Я бы предпочел его в секундах, поэтому я использовал этот:
Источник
Как узнать время запуска долго работающего процесса Linux? [закрыто]
Хотите улучшить этот вопрос? Обновите вопрос, чтобы он соответствовал теме переполнения стека.
Закрыто 2 года назад .
Можно ли получить время запуска старого запущенного процесса? Похоже, ps будет сообщаться дата (а не время), если она не была начата сегодня, и только год, если она не была начата в этом году. Потеряна ли точность для старых процессов навсегда?
-o lstart ? Похоже, это работает, но я не уверен, почему это не является очевидным ответом для многих раз, когда кажется, что этот вопрос возникает.
-o lstart= чтобы избежать печати дополнительной строки (заголовка).
-o lstart ? Может быть, тот факт, что нет lstart ни в версии 2004 года, ни в версии 2013 года стандарта POSIX 1003.1?
Вы можете указать форматер и использовать lstart , как эта команда:
Приведенная выше команда выведет все процессы с форматерами для получения PID, запуска команды и даты + время запуска.
Пример (из командной строки Debian / Jessie)
Вы можете прочитать страницу руководства ps или проверить страницу Opengroup для других форматеров.
Команда ps (по крайней мере, версия procps, используемая во многих дистрибутивах Linux) имеет несколько полей формата, которые относятся ко времени запуска процесса, в том числе lstart всегда указываются полная дата и время запуска процесса:
Для обсуждения того, как информация публикуется в файловой системе / proc, смотрите /unix/7870/how-to-check-how-long-a-process-has-been-running
(По моему опыту работы с Linux отметка времени в каталогах / proc /, похоже, связана с моментом, когда к виртуальному каталогу недавно обращались, а не со временем запуска процессов:
Обратите внимание, что в этом случае я выполнил команду «ps -p 1» примерно в 16:50, затем создал новую оболочку bash, а затем вскоре после этого выполнил команду «ps -p 1 -p $$» в этой оболочке . .)
В качестве последующих мер в ответ Адама Матана в , в /proc/
штампе времени справочника как таковой не обязательно непосредственно полезен, но вы можете использовать
чтобы получить время начала в тактах с момента загрузки системы. 1
Это немного сложная единица для использования; см. также преобразование jiffies в секунды для деталей.
Это должно дать вам секунды, которые вы можете передать, чтобы strftime() получить (удобочитаемую или другую) метку времени.
Обновлен некоторыми исправлениями от Stephane Chazelas в комментариях; спасибо как всегда!
Если у вас есть только Mawk, возможно, попробуйте
1 человек проц ; поиск времени начала .
Источник
[C][Unix]Время старта процесса
Вопрос: можно ли и, если можно, то как узнать время запуска процесса, зная его PID? Есть надежда, что должна быть какая-то библиотечная функция, но поиск ничего вразумительного не дал.
getrusage дает время выполнения, но не реальное время прошедшее со момента запуска процесса.
Re: [C][Unix]Время старта процесса
ps -O pid,start_time,args
Попробуй исходники глянуть.
Re: [C][Unix]Время старта процесса
Re: [C][Unix]Время старта процесса
Похоже ничего другого не остается, кроме как лезть в исходники ps.
Как вариант — читать /proc/PID/psinfo, похоже там записана структура psinfo_t из libproc.h, но хочется чего-то стандартного.
Re: [C][Unix]Время старта процесса
Re: [C][Unix]Время старта процесса
Только ps, да и то я не могу найти в посиксном мане соответствующее.
В линуксе можно глянуть stat(/proc/PID), у него ctime как раз искомое.
Re: [C][Unix]Время старта процесса
Пожалуй, это проще всего. Но st_ctime формально не является датой создания, оно может меняться при chmod(2), chown(2), creat(2), link(2), mknod(2), pipe(2), rename(2), unlink(2), utime(2), and write(2) согласно ману соляриса. Вообще, возможно ли это изменение для /proc/PID? И если возможно, то какова вероятность?
Re: [C][Unix]Время старта процесса
глянул на ps, оно получает данные процессов вызовом функции readproctab2, описания по ней я не нашел, подозреваю, что читает всю таблицу процессов, заполняя довольно объемные структуры proc_t. Оверхед кажется довольно большим.
Re: [C][Unix]Время старта процесса
А не проще ли от абсолютного времени системы отнять время работы процесса, а?
Re: [C][Unix]Время старта процесса
> А не проще ли от абсолютного времени системы отнять время работы процесса, а?
Процесс может простаивать
Источник
Как найти время выполнения команды или процесса в Linux
Вероятно, вы знаете время начала команды / процесса и как долго процесс выполняется в Unix-подобных системах.
Но когда вы его закончили и / или какое общее время, затраченное на выполнение команды / процесса?
В Unix-подобных системах есть утилита с именем «GNU time», специально предназначенная для этой цели.
Используя утилиту Time, мы можем легко измерить общее время выполнения команды или программы в операционных системах Linux.
Хорошо, что команда «Time» поставляется в большинстве дистрибутивов Linux, поэтому вам не нужно беспокоиться об установке.
Найти время выполнения команды или процесса в Linux
Чтобы измерить время выполнения команды / программы, просто запустите.
Вышеуказанные команды отображают общее время выполнения команды «ls».
Замените «ls» любой командой / процессом по вашему выбору, чтобы найти общее время выполнения.
- real – возвращает общее время, затраченное командой / программой,
- user – указывает время, затраченное программой в пользовательском режиме,
- sys – указывает время, затраченное программой в режиме ядра.
time и /usr/bin/time
Как вы могли заметить, в приведенных выше примерах мы использовали две команды «time» и «/usr/bin/time».
Итак, вы можете задаться вопросом, в чем разница между ними.
Сначала давайте посмотрим, что на самом деле «timeя» использует команду «type».
Для тех, кто не знает, команда Type используется для получения информации о команде Linux.
Как видите time – две штуки
- Ключевое слово, встроенное в оболочку BASH
- Исполняемый файл – /usr/bin/time
Поскольку ключевые слова оболочки имеют приоритет над исполняемыми файлами, когда вы просто запускаете runmimommand без полного пути, вы запускаете встроенную команду оболочки.
Но, когда вы запускаете /usr/bin/time, вы запускаете реальную программу времени GNU time.
Итак, чтобы получить доступ к реальной команде, вам может потребоваться указать ее явный путь.
Встроенное ключевое слово оболочки «time» доступно в большинстве оболочек, таких как BASH, ZSH, CSH, KSH, TCSH и т. д.
Ключевое слово оболочки «time» имеет меньше опций, чем исполняемые файлы.
Единственный вариант, который вы можете использовать в ключе «time», – это -p.
Теперь вы знаете, как найти общее время выполнения данной команды / процесса, используя команду «time».
Хотите узнать немного больше об утилите «GNU time»? Читайте дальше!
Краткое введение в программу «GNU time»
Программа GNU time запускает команду / программу с заданными аргументами и суммирует использование системных ресурсов в качестве стандартного вывода после завершения команды.
В отличие от ключевого слова time, программа GNU time не просто отображает время, используемое командой / процессом, но и другие ресурсы, такие как память, вызовы ввода-вывода и IPC.
Типичным синтаксисом команды Time является:
options в приведенном выше синтаксисе ссылаются на набор флагов, которые могут использоваться командой time для выполнения определенной функциональности.
Список доступных опций приведен ниже^
- -f, -format – Используйте этот параметр, чтобы указать формат вывода по вашему желанию.
- -p, -portability – Использовать переносимый формат вывода.
- -o file, -output = FILE – Записывает вывод в FILE вместо отображения в качестве стандартного вывода.
- -a, -append – Добавить файл в файл вместо перезаписывания.
- -v, -verbose – Этот параметр отображает подробное описание вывода утилиты «время».
- -Quiet – этот параметр запрещает утилиту времени «время» сообщать о статусе программы.
- При использовании программы «GNU time» без каких-либо параметров вы увидите вывод, как показано ниже.
Если вы запустите ту же команду с встроенным ключевым словом «time», результат будет немного другим:
В некоторых случаях вы можете записать вывод использования системного ресурса в файл, а не отображать его в терминале. Для этого используйте флаг -o, как показано ниже.
Как вы можете видеть на выходе, утилита Time не отображает результат. Потому что мы записываем вывод в файл с именем file.txt. Давайте посмотрим на этот файл:
Когда вы используете флаг -o, если нет файла с именем «file.txt», он будет создавать и записывать вывод в него.
Если файл.txt уже присутствует, он перезапишет его содержимое.
Вы также можете добавить вывод в файл, а не переписывать его, используя флаг -a.
Флаг -f позволяет пользователям управлять форматом вывода по своему усмотрению.
Скажем, например, следующая команда отображает вывод команды «ls» и показывает только пользователя, систему и общее время.
Помните, что встроенная команда «time» не поддерживает все функции программы GNU time.
Для получения дополнительной информации о утилите времени GNU см. Справочные страницы.
Источник
How to get the start time of a long-running Linux process?
Is it possible to get the start time of an old running process? It seems that ps will report the date (not the time) if it wasn’t started today, and only the year if it wasn’t started this year. Is the precision lost forever for old processes?
-o lstart ? Seems like it works, but I’m not sure why it’s not the immediate obvious answer for the many times this question seems to come up.
-o lstart= to avoid additional line (header) to be printed.
-o lstart ? Maybe the fact there’s no lstart neither in 2004 Edition nor in 2013 Edition of POSIX 1003.1 standard?
7 Answers 7
You can specify a formatter and use lstart , like this command:
The above command will output all processes, with formatters to get PID, command run, and date+time started.
Example (from Debian/Jessie command line)
You can read ps ‘s manpage or check Opengroup’s page for the other formatters.
The ps command (at least the procps version used by many Linux distributions) has a number of format fields that relate to the process start time, including lstart which always gives the full date and time the process started:
(In my experience under Linux, the time stamp on the /proc/ directories seem to be related to a moment when the virtual directory was recently accessed rather than the start time of the processes:
Note that in this case I ran a «ps -p 1» command at about 16:50, then spawned a new bash shell, then ran the «ps -p 1 -p $$» command within that shell shortly afterward. )
Источник