Linux - Как узнать, когда начался процесс?

23

Как я могу увидеть, когда начался процесс, при условии, что я знаю pid. (В Linux)

Рори
источник

Ответы:

30

Если вы хотите только время начала, вы можете выбрать поле и подавить заголовок, выполнив это:

 ps -p YOURPID -o lstart=

вывод будет выглядеть так:

 Mon Dec 14 17:17:16 2009

который является ctime(3)форматом, и вы можете разобрать его, чтобы выделить соответствующие части.

Другие поля запуска , такие как start, stime, bsdstartи start_timeвозраст время (после 24 часов только дата показывается, например).

Однако вы можете использовать их непосредственно для недавно запущенных процессов без дальнейшего анализа:

ps -p YOURPID -o stime=

который будет выводить что-то вроде:

09:26
Приостановлено до дальнейшего уведомления.
источник
Это работает на Mac тоже!
Брэд Паркс
8

"ps -f" - это на страницах руководства

Chopper3
источник
2
И для выбора известного pid:ps -f -p yourpid
Приостановлено до дальнейшего уведомления.
На самом деле это работает, если процесс был запущен в тот же день, но если он был запущен в другой день, вы получаете только день, а не время суток, как на @DennisWilliamson ответ
alphamikevictor
8

awk '{print $22}' /proc/$pid/stat - дает вам время начала в Jiffies после загрузки

Джеймс
источник
Красиво непонятный ответ!
wzzrd
Загадка мне это. Система с временем безотказной работы «17: 57» имеет процесс с временем запуска «727975». Похоже, процесс начался через 8 дней?
Скотт Пак
1
Это на самом деле в jiffies (100 / сек)
MarkR
1
Слишком непонятно! И, кроме того, теперь вам нужно посмотреть время загрузки и выполнить математические операции для преобразования jiffies в секунды и вычислить смещение, чтобы получить время на часах. Легко, но слишком много шагов. Смотрите ответ Chopper3.
Приостановлено до дальнейшего уведомления.
Количество jiffies в секунду хранится в системной переменной HZ. В основном это 100. Для вычисления в оболочке вы можете использовать это: stackoverflow.com/a/44524937/1950345
reichhart
0

Если openvpnна хосте есть один процесс с заданным именем (например ), вы можете сделать:

ps -p `pgrep openvpn` -o lstart=
aperezbios
источник
-1

один способ, которым вы можете ps -f | grep, как вы сказали, pid, другой способ, который вы можете использовать в топе.

Раджу
источник