Get-Process -Id <pid>
は、特定のプロセスに関する情報だけを返しますが、このプロセスによって呼び出されたすべての情報は返されません。プロセスとサブプロセスの情報(メモリ)
プロセスによって取得されたすべてのメモリとそのプロセスによって作成されたすべてのプロセスを知る方法はありますか? PowerShellで
Get-Process -Id <pid>
は、特定のプロセスに関する情報だけを返しますが、このプロセスによって呼び出されたすべての情報は返されません。プロセスとサブプロセスの情報(メモリ)
プロセスによって取得されたすべてのメモリとそのプロセスによって作成されたすべてのプロセスを知る方法はありますか? 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で
ジャン・フランソワ・ファーブルはcommentsで提案されているように、あなたは、モジュールpsutil
を使用すると思います。あなたがプロセスではなく、彼らが一度に使用している物理メモリの合計割り当てられた仮想メモリをしたい場合は
import psutil
parent = psutil.Process(123)
for child in parent.children(recursive=True):
print(child.memory_info().rss)
は
vms
で
rss
を交換してください。
プロセスのtaskmgr.exeに示されているメモリは、rssが表示しているものと同じではありません。理由を教えてください。 – Akash
タスクマネージャは、ワーキングセットのプライベートバイトを表示します。 'memory_info()'はその情報をAFAICSに提供しないので、取得するには[this](https://stackoverflow.com/a/33228050/1630171)のようなものが必要でしょう。 –
'psutil'モジュールのチェックはどうですか? (Python用) –
私はそれに精通していませんか?それは役に立ちますか? – Akash
超便利! –