3

Windowsでは、タスクマネージャーをプルアップするかGet-Process、PowerShellで、実行中のプロセスとそのメモリおよびCPU使用率のリストを取得できます。

(Windows 8またはGet-ServicePowerShellで)実行中のすべてのサービスを表示することもできます。ただし、サービスの場合、これらの番号は取得されません。

私の開発者の観点からは、これは常に少し奇妙に思えました。確かに、サービスにはさらに多くのデプロイメント作業が必要であり、コーディングとデバッグが面倒ですが、それ以外の点では、他のサービスと同じプログラムにすぎません。

サービスにこれらの番号がないのには十分な理由があると確信しています。これはおそらく、Windowsがサービスを実行する方法と関係があります。その理由は何ですか?

4

2 に答える 2

2

複数のサービスを起動/処理できるサービスホストプロセス「svchost.exe」があります。通常、リソースの消費はオペレーティング システムによってプロセス レベルで測定されるため、同じホスト プロセスによって開始されたサービスはすべて、そのプロセスによる使用量として表示されます。

コントロール パネルの「サービス」領域を調べて、サービスを開始するプログラムを探すと、ほとんどの Windows サービスがすべて、異なるパラメーターで「svchost.exe」を使用してサービスを開始していることがわかります。

タスク マネージャーには svchost.exe の複数のインスタンスが表示されるため、特定のサービスを svchost.exe の 1 つのインスタンスに分離することは可能ですが、どのインスタンスが目的のサービスだけを提供しているかを知る必要があります。PowerShell を使用して svchost.exe からサービスを開始できますが、プロセス ID に固執し、タスク マネージャーにプロセス ID 列を追加して、メモリ/CPU 使用率を確認できます。

于 2013-02-14T15:33:54.753 に答える
2

個々のサービスのメモリ使用量を表示する方法を見つけることはできませんでしたがtasklist /svc、コマンド ラインで を使用して svchost の各インスタンスで実行されているサービスを表示したり、個々の svchost のメモリ使用量を表示したりできます。プロセス ID を調べます。

于 2013-09-06T02:19:02.253 に答える