经过大量研究,我得出了这一点:
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 脚本中正确地转义引号等等。