Можно ли получить время безотказной работы от процесса Windows, который не основан на настройках часов системы?
Решение на базе Linux выглядит примерно так:
ps -eo comm,etime
С некоторыми исследованиями я попробовал несколько вещей на Windows, но я не нашел того, что ожидал. Например, используя:
New-TimeSpan -Start (get-process explorer).StartTime
в PowerShell у меня получилось следующее:
Моя проблема в том, что время основано на дате создания, поэтому если настройки часов по какой-либо причине изменятся, результат изменится следующим образом:
(Кстати, мне нравится отрицательное время безотказной работы)
Я также взглянул на wmic, и проблема та же:
WMIC PROCESS GET NAME, CREATIONDATE
Есть ли поле или возможность получить информацию о времени, например etime?
Спасибо
решение1
Можно ли получить время безотказной работы от процесса Windows, который не основан на настройках часов системы?
Cygwin ps
игнорирует изменения текущего времени.
Недостаток:
- Поле STIME отображает время начала в формате чч:мм:сс, поэтому невозможно определить, сколько дней оно работает.
Пример вывода (до изменения даты):
DavidPostill@Hal ~
$ date
Fri, Jul 17, 2015 9:59:11 AM
DavidPostill@Hal ~
$ ps -e -W -p 2612
PID PPID PGID WINPID TTY UID STIME COMMAND
2612 0 0 2612 ? 0 16:51:33 C:\Windows\explorer.exe
Пример вывода (после изменения даты):
DavidPostill@Hal ~
$ date
Fri, Jul 17, 2015 11:59:29 AM
DavidPostill@Hal ~
$ ps -e -W -p 2612
PID PPID PGID WINPID TTY UID STIME COMMAND
2612 0 0 2612 ? 0 16:51:33 C:\Windows\explorer.exe
Значение STIME
не изменилось -16:51:33
Примечания:
16:51:33
это время вчерашнего дня, когда я перезагрузил машину.- Поле
STIME
отображает время начала в таком форматеhh:mm:ss
, что невозможно определить, сколько дней оно длится.
В Cygwin ps отсутствует опция -o для форматирования вывода
Cygwin использует специальную программу ps, которая также может обрабатывать процессы Windows, но не поддерживает все эти параметры.
Однако procps
поддерживает -o
.
Недостатки:
- Поле STIME отображает время начала в формате чч:мм:сс, поэтому невозможно определить, сколько дней оно работает.
- Он не обрабатывает процессы Windows.