
Linux、特にUbuntu(14.04以降)システムについて話します。
ケース1 - 指摘したようにこの回答、疑似端末に割り当てられたプロセスはログインする必要はありません。例: cups
。とにかく彼らはいいえコマンド出力に一覧表示されますwho
。
ケース2 - GUIログインを実行すると、実行可能ファイルgnome-terminal
(またはxfce4-terminal
デスクトップ環境に応じて)がユーザーと共に多数の疑似端末を開くことができます。すでにログインして各擬似端末を開くと、who
コマンド出力に新しい行が表示されます。
だから、
1)プロセスとユーザーの両方が端末を開くことができるため、共通の特性(同様の方法で動作できるため)との違いが必要です。 ~からシステムシェル、ユーザー(ターミナルを開くときに明らかにログインが必要であり、コマンドにリストされてwho
います)とプロセス(ターミナルを使用するためにログインが必要ではなくコマンドにリストされていない)who
の違いは何ですか?私の疑いは、プロセスが必要なときにシステムの確認なしに端末を開くことができるのに対して、ユーザーは常にログインしている必要があるということです。
2)どうすればいいですか?ユニークGUIログイン端末エミュレータで開かれた疑似端末へのすべてのログインを「ロック解除」しますか? viaを開くと/dev/tty1
効果はありませんCtrlAltF1。
答え1
プロセスは、実行可能なバイナリの実行中のインスタンスです。すべてのファイルなどのすべてのプロセスは特定のユーザーに属します。 (あるプロセスのユーザーIDが異なるため、少し複雑ですが、ほとんど同じです。)
プロセスがファイル、TCPソケットなどを開くか生成できるように、ターミナルライン(tty)はいつでもすべてのプロセスで開くことができます。これに関して、端末には特別なものはありません。
これは古いユーザーレベルの概念であり、ログインを追跡するためのutmp / wtmpデータベースが存在します。グラフィカルログインマネージャは、グラフィカルログイン全体に属するレコードを更新し(多少意味があります)、端末エミュレータは特定の端末行に属するレコードを自発的に更新(または更新しません)します(私の意見ではhttps://bugzilla.gnome.org/show_bug.cgi?id=747046、無意味)。これは、ターミナルがグラフィックエミュレータではなく実際のターミナルだった頃から来ており、もちろん誰がどこにログインしたのかを追跡するのが合理的でした。
who
私の考えでは、グラフィックターミナルエミュレータを開くことが「ログイン」を意味するか、開いているターミナルウィンドウ/タブのログエントリを生成する必要があり、同様のユーティリティでそれを報告する必要があるのは古くて悪い伝統です。
who
ある程度正しく維持されているutmp / wtmpファイルから情報を印刷するなどのユーティリティも、有用性と信頼性にかなり制限されています。
答え2
user
説明に基づいて、「and」という単語を誤って使用したことは確実ですprocess
。私が見るには、あなたが何かをユーザーまたはプロセス(偶然にそれらの1つ)であると信じているようです。これはまったく真実ではありません。
実行可能プログラムコードの各実行インスタンス(「自動的に」(起動プロセスの一部など)またはユーザーの対話(マウスクリックなど)によって開始されるかどうか)と呼ばれますprocess
。user
起動プロセス、これらのプロセスを一般的にスーパーユーザーと呼びますroot
。