Windows 7 или Server 2008 Показать время выполнения процесса
Есть ли простой способ показать, как долго конкретный экземпляр PID был активен?
2 ответа
Использование командлета Powershell Get-Process:
Get-Process | Select-Object ID, время начала, имя | Sort-Object id
Gregg,
Я знаю, что Process Explorer покажет это, вроде.
Получите это здесь: http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
Если вы запустите его, щелкните правой кнопкой мыши по процессу и выберите Properties
он покажет вам время начала процесса (и вы можете нажать на Threads
вкладка, чтобы увидеть время начала отдельных потоков).
В качестве альтернативы в Process Explorer вы можете нажать View
, Select Columns
, выбрать Process Performance
вкладка и выберите Start Time
и тогда он покажет этот столбец в главном окне для всех PID.
Возможно, вам придется сделать свою собственную математику для отдельных потоков в этом процессе (снова вкладка потоков) и текущей даты / времени, чтобы получить истинный ответ "как долго".
В 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, и он будет выводиться при запуске процесса. Предостережение: если существует много процессов с одинаковым именем, он будет выводить время только для последнего запущенного.