Определить время работы процесса
Есть ли способ определить "время работы" процесса в Windows. Разочарован, обнаружив, что это не один из атрибутов, доступных при использовании диспетчера задач.
7 ответов
Вы можете увидеть это с помощью Process Explorer. В меню панели задач выберите View
и проверить Show Process Tree
и Show Lower Pane
опции. Щелкните правой кнопкой мыши по любому столбцу и Select Columns
, теперь нажмите на Process Performance
вкладку и проверьте Start Time
коробка.
Это можно сделать с помощью Powershell.
Запустите его как администратор, а затем выполните
Get-Process | выберите имя, время начала
Вы получите список всех запущенных процессов и время их запуска.
Если вы находитесь на сервере, где вы не можете установить какой-либо внешний инструмент, вы все равно можете:
- Откройте диспетчер задач
- Нажмите на вкладку процесса
- Найдите свой процесс
- Щелкните по нему правой кнопкой мыши
- Выберите опцию Свойства
Вы можете увидеть "дату создания", которая должна быть датой создания вашего процесса. С помощью простого вычитания вы можете определить время безотказной работы.
В CMD вы можете использовать стандартную утилиту командной строки Windows Management Instrumentation (WMIC), чтобы получить время запуска процесса:
wmic process where Name="<process name>" get CreationDate
или же
wmic process where ProcessID="<PID>" get CreationDate
Вы получите такую дату и время:
20201021010512.852810+180
.
Формат:
YYYYMMDDHHMMSS.ssssss+MMM(UTC offset)
Если вам нужно более читаемое представление, вам нужно подготовить его с помощью скрипта. Вот для этой цели я написал небольшой пакетный скрипт:
@ECHO OFF
SETLOCAL
IF [%1]==[] (
ECHO Prints process creation date in ISO format.
ECHO:
ECHO USAGE: %~n0 ^<PID or Process name^>
EXIT /B 1
)
IF [%~x1]==[.exe] (SET type=Name) ELSE (SET type=ProcessID)
FOR /F "tokens=1,2 delims==" %%a IN ('wmic process where %type%^="%~1" get CreationDate /value') DO (
IF [%%a]==[CreationDate] SET proc_cd=%%b
)
IF DEFINED proc_cd (
ECHO %proc_cd:~0,4%-%proc_cd:~4,2%-%proc_cd:~6,2%T%proc_cd:~8,2%:%proc_cd:~10,2%:%proc_cd:~12,2%
)
Введите в него PID или имя процесса, оканчивающееся на.exe, и он будет выводиться при запуске процесса. Предостережение: если существует много процессов с одинаковым именем, он будет выводить время только для последнего запущенного.
Откройте диспетчер задач и щелкните правой кнопкой мыши по процессу. Выберите «Свойства» в меню и посмотрите на поле «Доступ» на первой вкладке. Если не было запущено несколько экземпляров, это даст вам время начала процесса.
С помощью PID из диспетчера задач вы можете использовать следующую команду Powershell с подразумеваемым -End (Get-Date):
New-Timespan -Start (Get-Process -Id PID).StartTime
Может быть, вы можете попробовать procxp http://technet.microsoft.com/en-us/sysinternals/bb896653