많은 연구를 통해 저는 다음과 같은 결론을 얻었습니다.
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 스크립트에서 따옴표 등을 올바르게 이스케이프하고 있는지 확인하십시오.