
Gnomeのシステムモニタには、[プロセス]タブに[ユーザー]列があります。 「所有者」列もあります(基本的に隠されているようです)。
ほとんどのプロセスは両方の列で同じ値を持ちます。しかし、一部はそうではありません。
各列が正確に何を表示しているのか、2つの違いが何であるかを知りたいです。
答え1
systemdはまったく新しい初期化システムです(4年になると思います)。しかし、systemdにはPID 1よりもはるかに多くのものが含まれています。具体的には、TTYセッション、X11セッション、および通常はログインを管理する従来のソフトウェアであるConsoleKitの代替ソフトウェアが含まれています。 systemdのConsoleKitの代替品はlogindと呼ばれ、多くの利点があります(例えば、最終的に複数の座席が利用可能になったかどうか、他にはよくわかりません)。
3cgroup
秒未満でシステム化されました。 ㅏたくさん。cgroup
プロセス制御グループとも呼ばれるsは、どのプロセスがどの抽象「サービス」に属するかを追跡するsystemdの方法です1。あなたの質問を理解するための鍵は、logind
これがユーザーにも当てはまるということです。各ユーザーセッションには独自のカーネル「セッション」があり、これは推測されましたが、cgroup
なぜですか?これはカーネルがユーザー間のリソースを適切に管理できるからです。ユーザーが多くのプロセスを実行しているとしても、CPU時間を増やす必要があるというわけではありません。しかし、cgroup
sの場合はそれぞれcgroup
プロセッサで同じ時間を確保することで、すべてのユーザーが同じリソースを取得します。
さて、今の背景が完成しました。準備してますか?上記の構成を考慮すると、あなたの質問に対する実際の答えは非常に普通です。プロセス「所有者」は、何が起こってもプロセスを開始した人に対応します。技術レベルでは、これはユーザーセッションとして追跡され、プロセスcgroup
「ユーザー」は伝統的な意味で「ユーザー」です。つまり、プロセスが実行されるID(およびそのIDに関連するすべてのもの、特に権限)です。 )。
例は次のとおりです。 GNOMEにログインして端末を起動します。 GNOME シェル、GNOME ターミナル、およびgnome-session
GNOME を構成する他のすべてのプロセス実行は、ユーザーとして実行されます。言い換えれば、あなた(あなたがあなたの資格情報を提供してログインしたため)もあなたの所有です(つまり、プロセスがあなたの間違っているからです)。それではsudo -u
、例を見てみましょうnobody
。これでIDを想定したプロセスが実行されていますが、nobody
より高い抽象化レベルでは、プロセスはまだユーザーによって開始され、まだセッション2に接続されています。このレベルはユーザーcgroup
3によって追跡され、あなたが「所有者」であるという事実を決定します。
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
答え2
「所有者」列は、この特定のプロセスが属するセッションを所有しているユーザーの名前に関連付けられます。
10.3 セッション
各プロセスグループは一意のセッションにあります。 (プロセスが作成されると、親プロセスのセッションメンバーになります。)通常、セッションのセッションIDは、セッションの最初のメンバー(セッションリーダーと呼ばれる)のプロセスIDと同じです。プロセスはシステムコールを使用してセッションIDを見つけます
getsid()
。
tty
各セッションには、各メンバープロセスのコントロールttyとも呼ばれるコントロールがあります。 ttyを制御するファイル記述子はそれを開いて取得できます/dev/tty
。 (失敗するとコントロールはありませんtty
。)コントロールのファイル記述子が与えられた場合、tty
SIDはを使用して取得できますtcgetsid(fd)
。セッションは通常、ログインプロセスによって確立されます。ログインした端末がセッションを制御する端末になります。ログインプロセスの子プロセスであるすべてのプロセスは通常セッションのメンバーです。
これが「セッション」列になります。このセッションIDの所有者は所有者列です。
はい
gnome-system-monitor
シェルでGNOMEシステムモニタを実行します。