如何在 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 腳本中正確轉義了引號等。

相關內容