¿Cómo obtengo el número bruto de bytes para un PID en la CLI de Windows?

¿Cómo obtengo el número bruto de bytes para un PID en la CLI de Windows?

Después de mucha investigación, llegué a este punto:

tasklist /fi "pid eq 13584" /fo CSV

Producción:

"Image Name","PID","Session Name","Session#","Mem Usage"
"php.exe","13584","Console","1","25 660 K"

Sigue siendo un desastre feo. Estoy intentando obtener resultados como:

25660000

Es decir, sin CSV ni otros "formatos"/datos no deseados. Sin cantidad de memoria "formateada". Solo bytes sin procesar.

¿Cómo se hace?

Respuesta1

cmdNo es la mejor manera de hacer esto en un sistema moderno. Powershell es mucho más versátil y, una vez que te acostumbras a la sintaxis y la simántica, mucho más potente.

Por ejemplo, para enumerar todos los procesos de un sistema:

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

Desde allí puede enumerar un PID específico:

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 = Memoria privada
WS = Conjunto de trabajo

Para obtener sólo la memoria:

PS C:\Users\user> (Get-Process -PID 12092).WorkingSet
13217792
PS C:\Users\user> (Get-Process -PID 12092).PrivateMemorySize
7413760

Si tiene powershell disponible en su sistema, puedeÚselo para ejecutar el comando y devolverloa cmd:

cmd> powershell.exe -command "(Get-Process -PID 12092).PrivateMemorySize"
7598080

Hay algunas sugerencias queEs posible que PowerShell no genere correctamentecuando se ejecuta desde ciertos entornos y necesita que lo use, Write-Outputasí como -InputFormat noneintente

powershell.exe -InputFormat none -command "Write-Output((Get-Process -PID 12092).PrivateMemorySize)"

asegúrese de escapar correctamente de las comillas, etc. en su script php.

información relacionada