GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでのセッションの定義は何ですか?

Session 通常、シェル セッションを指します。シェルは、コンピューターと対話できるようにするものです。これは、ユーザーとカーネルの間のブリッジとして機能します。コマンドを実行するたびに、ユーザーの意図を捉えてカーネルに実行を指示するのはシェルです。

ほとんどの Linux フレーバーでは、デフォルトのシェルは bash です。 そして新しい bash 新しいターミナルを開くたびにセッションが開始されます。 w の出力 あなたが投稿した、グラフィカルなログイン セッションがあるようです (マシンを sshing しているように見えます):

argento  :0        18set13 ?xdm?   2days  1.58s gdm-session-worker [pam/gdm-password]

いくつかの開いているターミナル エミュレーター:

argento  pts/0     18set13 29:26m  5:26   5:26  rdesktop -g 1200x700 -u administrator -p XXXXXXXXX -d DOMAIN -K srv-wsus
argento  pts/1     18set13  9days  0.16s  0.16s /bin/bash
argento  pts/2     lun10    5.00s  0.09s  7.55s /usr/bin/python /usr/bin/terminator
argento  pts/3     14:40   33:41   0.09s  0.03s vim notes.txt
argento  pts/4     gio12   26:04m  0.10s  7.55s /usr/bin/python /usr/bin/terminator
argento  pts/5     14:56   17:33   0.11s  0.11s /bin/bash

また、非グラフィカル tty からログインしたようです:

argento  tty2      15:11    1:01   0.09s  0.09s -bash

これらはそれぞれシェルの個別のインスタンスであり、それぞれが独自のセッションとしてカウントされます。


1. ユーザーは単一のプロセス (コマンド ライン インターフェイスであるシェル) にログインしますが、次のようなアクションの結果として、ユーザーは多くのプロセスを実行することになります:

-> 非対話型タスクをバックグラウンドで実行しています。
-> ジョブ制御による対話型タスクの切り替え。
-> パイプを介して連携する複数のプロセスを開始します。
-> 複数の端末ウィンドウを開くことができる X ウィンドウ システムなどのウィンドウ システムの実行

2. これらすべてのプロセスを処理するために、カーネルはこれらのプロセスで構成されるプロセス グループを形成する必要があります。

3. これらのプロセス グループをユーザーごとにさらに管理するために、これらのグループはユーザーごとにセッションに分割されます。は 2 人の異なるユーザーを表し、ここでは 2 つの異なるユーザー セッションを表します。端末は単一のセッションに対してのみ端末を制御できます)。
その「ユーザー」またはセッションのシェルを実行しているプロセスは、セッション リーダーと呼ばれます。

4. また、「x」ボタンを押してターミナルを閉じても、そのターミナルから出られないことに注意してください。その端末はバックグラウンドで実行され続けます。ターミナルからセッションをオーバーしたい場合は、CTRL+D を押すか終了してそこからログアウトする必要があります。

5. ターミナルからログアウトすると、カーネルはセッション リーダーであるプロセスに SIGHUP シグナル (kill -1 と同様) を送信します。現在、ターミナルで実行されている他のすべてのプロセスは、このセッション リーダーの子です。これらの子プロセスは、このセッション リーダー プロセス (親プロセス) によって制御されるプロセス グループを形成していました。

6. セッション リーダー プロセスが各子プロセスに SIGHUP を送信し、一部のプロセスは終了しますが、一部のプロセスは終了しないことを選択できます (一時停止またはバックグラウンドで実行されているプロセス)。終了しないことを選択したものは、セッション オーバーとして孤立し、すぐに init プロセス (Linux マシンのすべてのプロセスの親) によって採用されます。


詳細については、Linux 開発のプロセス モデルのリンクを参照してください


すべての端末セッションはユーザー セッションだと思います。 X の下に複数の端末を持つことができ、それらは仮想端末です。または、コンソールの下に実際の端末を持つことができます。これらはすべてセッションです。これは私の 'w' です。

$ w
 15:14:13 up 9 days,  6:02,  8 users,  load average: 1,03, 1,19, 1,31
USER     TTY        [email protected]   IDLE   JCPU   PCPU WHAT
argento  :0        18set13 ?xdm?   2days  1.58s gdm-session-worker [pam/gdm-password]
argento  pts/0     18set13 29:26m  5:26   5:26  rdesktop -g 1200x700 -u administrator -p XXXXXXXXX -d DOMAIN -K srv-wsus
argento  pts/1     18set13  9days  0.16s  0.16s /bin/bash
argento  pts/2     lun10    5.00s  0.09s  7.55s /usr/bin/python /usr/bin/terminator
argento  pts/3     14:40   33:41   0.09s  0.03s vim notes.txt
argento  pts/4     gio12   26:04m  0.10s  7.55s /usr/bin/python /usr/bin/terminator
argento  pts/5     14:56   17:33   0.11s  0.11s /bin/bash
argento  tty2      15:11    1:01   0.09s  0.09s -bash

2 番目の列は tty を示しています。pts は xterm (仮想端末) であり、もう一方 (tty2) はコンソール ログインです。


Linux
  1. Linuxシステムの現在のランレベルはどれくらいですか?

  2. Linuxコマンドの最後の&はどういう意味ですか?

  3. Linux ソートのデフォルトの順序は何ですか?

  1. Linuxを持続可能なOSにする理由

  2. Linuxコミュニティが特別な理由は何ですか?

  3. LinuxとUnix:違いは何ですか?

  1. Linuxでの.bashrcファイルの目的は何ですか

  2. Linux では、top コマンドのすべての値は何を意味しますか?

  3. Linuxでスクリーンプロセスを停止するには?