Получить время настенных часов процесса Windows с командной строкой

3

Можно ли получить время безотказной работы от процесса Windows, который не основан на настройках часов системы?

Решение на основе Linux это что-то вроде:

ps -eo comm,etime

Проведя некоторые исследования, я попробовал несколько вещей на Windows, но я не нашел то, что ожидал. Например, используя:

New-TimeSpan -Start (get-process explorer).StartTime

в PowerShell я получил это:

http://i.stack.imgur.com/uNF7y.png

Моя проблема в том, что время основано на дате создания, поэтому, если настройки часов будут изменены по какой-либо причине, результат изменится так:

http://i.stack.imgur.com/cIR9W.png

(Кстати, мне нравится негативное время работы)

Я также взглянул на wmic, и проблема та же:

WMIC PROCESS GET NAME, CREATIONDATE

Есть ли поле или опция для получения информации о времени, например, etime?

Спасибо

Ф. Гийен
источник
1
Хороший вопрос, +1. Настенное время для тех, кто не знаком с термином (как я).
Raystafarian
Время настенных часов (или настенное время) означает человеческое восприятие времени. Я использовал это выражение, потому что мне не нужна информация о времени процессора или текущее время Windows. Время безотказной работы - более точное значение моей потребности.
Ф. Гийен
В этой статье по MS technet обсуждается использование секундомера .NET в powershell, если это вообще помогает.
Raystafarian
Cygwin's psигнорирует изменения текущего времени. Однако поле STIME отображает время начала только в формате чч: мм: сс, поэтому вы не можете сказать, сколько дней он работал: /
DavidPostill
Интересно ! Cygwin мог бы выполнить эту работу, так как я отслеживаю (и получаю данные об использовании) приложение с помощью демона, этот демон может решить проблему в течение нескольких дней. Мне также нравится статья о секундомере, может быть немного сложнее, но мне может понравиться возможность найти время предыдущей команды! Поскольку она не такая короткая, как одна командная строка, у меня есть несколько других вещей, над которыми нужно поработать раньше, но я опробую оба решения, чтобы высказать свое мнение здесь, как только смогу!
Ф. Гийен

Ответы:

1

Можно ли получить время безотказной работы от процесса Windows, который не основан на настройках часов системы?

Cygwin's 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.
ДэвидПостилл
источник
Прошло какое-то время ... Я принял этот ответ, потому что я думаю, что Cygwin должен быть в порядке для большинства людей. Мой вариант использования не соответствовал этому, но он был очень конкретным!
Ф. Гийен