Get-Process -Id <pid>
只返回有关该特定进程的信息,但是该进程调用的所有信息呢。
有没有办法知道进程占用的所有内存以及该进程创建的所有进程?
答案 0 :(得分:0)
在PowerShell中,您将定义一个递归函数来枚举给定进程的子进程:
function Get-ChildProcesses {
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true, ValueFromPipeline=$true)]
[int[]]$ProcessId
)
Process {
$ProcessId | ForEach-Object {
$_
Get-WmiObject -Class Win32_Process -Filter "ParentProcessID=$_" |
Select-Object -Expand ProcessId |
Get-ChildProcesses
}
}
}
然后用这些PID调用Get-Process
并扩展内存信息:
Get-Process -Id (Get-ChildProcesses 123) | Select-Object -Expand WorkingSet
如果您想要进程的总分配虚拟内存而不是当时正在使用的物理内存,请将WorkingSet
替换为VirtualMemorySize
。
在Python中,您使用模块psutil
,正如Jean-FrançoisFabre在comments中所建议的那样。
import psutil
parent = psutil.Process(123)
for child in parent.children(recursive=True):
print(child.memory_info().rss)
如果您想要进程的总分配虚拟内存而不是当时正在使用的物理内存,请将rss
替换为vms
。