多くの調査を経て、私は次の点にたどり着きました。
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 スクリプト内で引用符などが適切にエスケープされていることを確認してください。