Linux中“会话”的定义是什么?


Answers:


9

Session通常是指shell会话。一个是什么让您与计算机进行交互。它充当用户和内核之间的桥梁。每当您运行命令时,外壳程序都会捕获您的意图并告诉内核执行其操作。

在大多数Linux版本中,默认外壳程序为,bash并且bash每次打开新终端时都会启动一个新会话。在w发布的输出中,您似乎有图形登录会话(看起来像是在机器上旋转):

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

其中的每一个都是Shell的单独实例,每个都算作自己的会话。


2

我认为每个终端会话都是用户会话。您可以在X下拥有多个终端,而这些终端是虚拟终端,或者您可以在控制台下拥有真实终端。这些都是会议。这是我的“ w”

$ w
 15:14:13 up 9 days,  6:02,  8 users,  load average: 1,03, 1,19, 1,31
USER     TTY        LOGIN@   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

第二列显示了tty,因为您可以看到pts是xterm(虚拟终端),另一个(tty2)是控制台登录。


2

1.尽管用户登录到单个进程(shell是其命令行界面),但由于执行以下操作,用户最终会运行多个进程:

->在后台运行非交互式任务。
->通过作业控制在交互式任务之间切换。
->启动通过管道一起工作的多个过程。
->运行窗口系统,例如X窗口系统,该系统允许打开多个终端窗口。

2.为了处理所有这些进程,内核需要形成由这些进程组成的进程组。

3.为了根据用户进一步管理这些进程组,将这些组按用户划分为会话。(请注意,这里的用户不是linux用户,而shell或terminal代表user。同一台计算机上的两个终端由同一个linux用户登录代表2个不同的用户,因此在这里代表2个不同的用户会话。一个终端可以仅控制单个会话的终端)。
为该“用户”或会话运行外壳程序的进程称为会话负责人。

4.还要注意按“ x”按钮关闭终端,不能使您脱离该终端。该终端一直在后台运行。如果要从终端结束会话,则必须通过按CTRL + D退出该终端或退出。

5.当您从终端注销时,内核会发送SIGHUP信号(类似于kill -1)来处理作为会话领导者的进程。现在,在终端中运行的所有其他进程都是该会话负责人的子进程。这些子进程形成了由该会话负责人进程(父进程)控制的进程组。

6.会话负责人进程将SIGHUP发送到每个子进程,某些进程终止,而某些进程可以选择不终止(那些挂起或在后台运行)。那些选择不终止的对象将成为会话会话的孤立对象,并被init进程(Linux机器中所有进程的父级)立即采用。


有关更多信息,请参见链接Linux开发过程模型。


1

会话是由用户的进程运行的每个终端外壳。例如,我现在正在运行3个会话。我的Mate桌面环境和两个终端窗口。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.