Windows CLI で PID の生のバイト数を取得するにはどうすればよいですか?

Windows CLI で PID の生のバイト数を取得するにはどうすればよいですか?

多くの調査を経て、私は次の点にたどり着きました。

tasklist /fi "pid eq 13584" /fo CSV

出力:

"Image Name","PID","Session Name","Session#","Mem Usage"
"php.exe","13584","Console","1","25 660 K"

まだ醜い混乱です。次のような出力を取得しようとしています:

25660000

つまり、CSV やその他の「フォーマット」/不要なデータはありません。「フォーマットされた」メモリ量はありません。生のバイトだけです。

それはどうやってやるのですか?

答え1

cmdこれは、現代のシステムでこれを行うための最良の方法ではありません。Powershell ははるかに汎用性が高く、構文とシマンティクスに慣れると、はるかに強力になります。

たとえば、システム内のすべてのプロセスを一覧表示するには、次のようにします。

PS C:\Users\user> Get-Process

Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
    325      20    10328      28056       0.28  17868   2 ApplicationFrameHost
    208      15     7308      12952      22.95  12092   0 audiodg
    476      33    26572      15592     106.06   8852   2 BorderlessGaming
    155      11     1792       7600              4132   0 BtwRSupportService
     53       4      672       2980              5096   0 cdarbsvc_v1.0.0_x64
    142       7     1616       9092       0.05  17728   2 CompPkgSrv
... etc

そこから特定の PID を一覧表示できます。

PS C:\Users\user> Get-Process -PID 12092

Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
    208      12     7308      12952      31.48  12092   0 audiodg

PM = プライベートメモリ
WS = ワーキングセット

メモリのみを取得するには:

PS C:\Users\user> (Get-Process -PID 12092).WorkingSet
13217792
PS C:\Users\user> (Get-Process -PID 12092).PrivateMemorySize
7413760

システムでPowerShellが利用できる場合は、コマンドを実行して結果を返すために使用しますcmd

cmd> powershell.exe -command "(Get-Process -PID 12092).PrivateMemorySize"
7598080

いくつかの提案があるPowerShellが正しく出力されない可能性があります特定の環境から実行する場合、Write-Output同様に使用する必要があるので-InputFormat none試してみてください

powershell.exe -InputFormat none -command "Write-Output((Get-Process -PID 12092).PrivateMemorySize)"

PHP スクリプト内で引用符などが適切にエスケープされていることを確認してください。

関連情報