当我运行“ w”命令时,我看到两个用户登录(都是我)。在此处进行快速搜索可以发现这是正常现象,因为“单个用户可以同时拥有多个活动会话。”
什么是会议?当我仅登录到系统一次时,为什么会有两个?
当我运行“ w”命令时,我看到两个用户登录(都是我)。在此处进行快速搜索可以发现这是正常现象,因为“单个用户可以同时拥有多个活动会话。”
什么是会议?当我仅登录到系统一次时,为什么会有两个?
Answers:
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的单独实例,每个都算作自己的会话。
我认为每个终端会话都是用户会话。您可以在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)是控制台登录。
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开发过程模型。
会话是由用户的进程运行的每个终端外壳。例如,我现在正在运行3个会话。我的Mate桌面环境和两个终端窗口。