使用命令行获取 Windows 进程的挂钟时间

使用命令行获取 Windows 进程的挂钟时间

是否有可能从不基于系统时钟设置的 Windows 进程中获取正常运行时间?

基于 Linux 的解决方案类似于:

ps -eo comm,etime

经过一番研究,我在 Windows 上尝试了一些方法,但没有找到我期望的结果。例如,使用:

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

在 PowerShell 中,我得到了这个:

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

我的问题是时间基于创建日期,因此如果由于任何原因更改时钟设置,结果将会改变:

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

(顺便说一句,我喜欢负正常运行时间)

我也查看了 wmic,问题是一样的:

WMIC PROCESS GET NAME, CREATIONDATE

是否有一个字段或选项可以获取像 etime 这样的挂钟时间信息?

谢谢

答案1

是否有可能从不基于系统时钟设置的 Windows 进程中获取正常运行时间?

Cygwinps忽略当前时间的改变。

退税:

  • STIME 字段以 hh:mm:ss 格式显示开始时间,因此您无法知道它已经运行了多少天。

示例输出(更改日期之前):

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 字段以 hh:mm:ss 格式显示开始时间,因此您无法知道它已经运行了多少天。
  • 它不处理 Windows 进程。

相关内容