web-dev-qa-db-ja.com

コマンドラインでWindowsプロセスの実時間を取得する

システムのクロック設定に基づかない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のような実時間情報を取得するためのフィールドまたはオプションはありますか?

ありがとう

3
F. Guillin

システムのクロック設定に基づかないWindowsプロセスから稼働時間を取得することは可能ですか?

Cygwinのpsは、現在の時刻への変更を無視します。

欠点:

  • 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の形式で表示されるため、実行されている日数はわかりません。

Cygwinpsに出力をフォーマットするためのオプション-oがありません

Cygwinは、Windowsプロセスも処理できるが、これらすべてのオプションをサポートしているわけではないカスタムpsプログラムを使用します。

ただし、procps-oをサポートします。

欠点:

  • STIMEフィールドには、開始時刻がhh:mm:ssの形式で表示されるため、実行されている日数はわかりません。
  • Windowsプロセスは処理しません。
1
DavidPostill