Wie erhalte ich die Rohanzahl der Bytes für eine PID in der Windows-Befehlszeilenschnittstelle?

Wie erhalte ich die Rohanzahl der Bytes für eine PID in der Windows-Befehlszeilenschnittstelle?

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

cmdist 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-Outputsowie -InputFormat noneso 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.

verwandte Informationen