プロセス所有者とプロセスユーザー(Gnomeのシステムモニタ)

プロセス所有者とプロセスユーザー(Gnomeのシステムモニタ)

Gnomeのシステムモニタには、[プロセス]タブに[ユーザー]列があります。 「所有者」列もあります(基本的に隠されているようです)。

ほとんどのプロセスは両方の列で同じ値を持ちます。しかし、一部はそうではありません。

各列が正確に何を表示しているのか、2つの違いが何であるかを知りたいです。

ベストアンサー1

systemdはまったく新しい初期化システムです(4年になると思います)。しかし、systemdにはPID 1よりもはるかに多くのものが含まれています。具体的には、TTYセッション、X11セッション、および通常はログインを管理する従来のソフトウェアであるConsoleKitの代替ソフトウェアが含まれています。 systemdのConsoleKitの代替品はlogindと呼ばれ、多くの利点があります(例えば、最終的に複数の座席が利用可能になったかどうか、他にはよくわかりません)。

3cgroup秒未満でシステム化されました。 ㅏたくさんcgroupプロセス制御グループとも呼ばれるsは、どのプロセスがどの抽象「サービス」に属するかを追跡するsystemdの方法です1。あなたの質問を理解するための鍵は、logindこれがユーザーにも当てはまるということです。各ユーザーセッションには独自のカーネル「セッション」があり、これは推測されましたが、cgroupなぜですか?これはカーネルがユーザー間のリソースを適切に管理できるからです。ユーザーが多くのプロセスを実行しているとしても、CPU時間を増やす必要があるというわけではありません。しかし、cgroupsの場合はそれぞれcgroupプロセッサで同じ時間を確保することで、すべてのユーザーが同じリソースを取得します。

さて、今の背景が完成しました。準備してますか?上記の構成を考慮すると、あなたの質問に対する実際の答えは非常に普通です。プロセス「所有者」は、何が起こってもプロセスを開始した人に対応します。技術レベルでは、これはユーザーセッションとして追跡され、プロセスcgroup「ユーザー」は伝統的な意味で「ユーザー」です。つまり、プロセスが実行されるID(およびそのIDに関連するすべてのもの、特に権限)です。 )。

例は次のとおりです。 GNOMEにログインして端末を起動します。 GNOME シェル、GNOME ターミナル、およびgnome-sessionGNOME を構成する他のすべてのプロセス実行は、ユーザーとして実行されます。言い換えれば、あなた(あなたがあなたの資格情報を提供してログインしたため)もあなたの所有です(つまり、プロセスがあなたの間違っているからです)。それではsudo -u、例を見てみましょうnobody。これでIDを想定したプロセスが実行されていますが、nobodyより高い抽象化レベルでは、プロセスはまだユーザーによって開始され、まだセッション2に接続されています。このレベルはユーザーcgroup3によって追跡され、あなたが「所有者」であるという事実を決定します。

1:Apacheを例にしてみましょう。 Apacheが起動すると、すべてを制御する基本プロセスがありますが、いくつかの子プロセスも作成されます。基本的なApacheプロセスは実際には何もしません。単にサブプロセスを指示するだけで、それらプロセスは、すべてのタスクを実行するプロセスです。 (これはさまざまな理由で行われます。)Apache「サービス」の抽象概念が「Apache」プロセスの具体的な概念に直接マップされないという事実は、systemdなどのサービス管理者に問題を引き起こします。これがcgroupまさにsが機能する場所です。元の基本的なApacheプロセスが制御グループに配置され、それから何が行われても制御グループに配置されます。一度それから脱出してくださいcgroup。これは、Apacheサービスの抽象的な概念がcgroup「Apache」の具体的な概念に直接マッピングできることを意味します。

2:そのプロセスのPIDを/proc/$pid/sessionid持つプロセスのカーネルセッションに関するいくつかの情報を表示します。$pid

3cgroup:を見ると、プロセスの詳細がわかります。ここで問題のプロセスのPIDは/proc/$pid/cgroup次のとおりです。$pid

おすすめ記事