Nach vielen Recherchen bin ich zu folgendem Punkt gelangt:
tasklist /fi "pid eq 13584" /fo CSV
Ausgabe:
"Image Name","PID","Session Name","Session#","Mem Usage"
"php.exe","13584","Console","1","25 660 K"
Immer noch ein hässliches Durcheinander. Ich versuche, eine Ausgabe wie diese zu erhalten:
25660000
Das heißt, keine CSV- oder andere „Formatierungen“/unerwünschte Daten. Keine „formatierte“ Speichermenge. Nur Rohbytes.
Wie wird es gemacht?
Antwort1
cmd
ist nicht die beste Möglichkeit, dies in einem modernen System zu tun. Powershell ist vielseitiger und, wenn Sie sich erst einmal an die Syntax und Semantik gewöhnt haben, auch viel leistungsfähiger.
So listen Sie beispielsweise alle Prozesse in einem System auf:
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
Von dort aus können Sie eine bestimmte PID auflisten:
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 = Privater Speicher
WS = Arbeitssatz
So erhalten Sie nur den Speicher:
PS C:\Users\user> (Get-Process -PID 12092).WorkingSet
13217792
PS C:\Users\user> (Get-Process -PID 12092).PrivateMemorySize
7413760
Wenn Sie Powershell auf Ihrem System haben, können Sieverwenden Sie es, um den Befehl auszuführen und zurückzugebenZu cmd
:
cmd> powershell.exe -command "(Get-Process -PID 12092).PrivateMemorySize"
7598080
Es gibt einige Vorschläge, diePowershell gibt möglicherweise nicht richtig auswenn aus bestimmten Umgebungen ausgeführt und erfordert, dass Sie verwenden Write-Output
sowie -InputFormat none
so versuchen
powershell.exe -InputFormat none -command "Write-Output((Get-Process -PID 12092).PrivateMemorySize)"
Stellen Sie sicher, dass Sie Anführungszeichen usw. in Ihrem PHP-Skript ordnungsgemäß maskieren.