經過大量研究,我得出了這一點:
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 腳本中正確轉義了引號等。