当我运行“w”命令时,我看到两个用户登录(都是我)。在这里快速搜索一下,这是正常的,因为“一个用户可以在任何时间拥有多个活动会话”。
什么是会话?当我只登录一次系统时,为什么我有两个?
ter*_*don 11
Session通常是指外壳会话。一个壳是什么让您与计算机进行交互。它充当用户和内核之间的桥梁。每当您运行命令时,shell 都会捕获您的意图并告诉内核执行其操作。
在大多数 Linux 版本中,默认 shell 是bash,bash每次打开新终端时都会启动一个新会话。在w您发布的输出中,您似乎拥有图形登录会话(看起来您正在 ssh 机器上):
argento :0 18set13 ?xdm? 2days 1.58s gdm-session-worker [pam/gdm-password]
Run Code Online (Sandbox Code Playgroud)
几个开放的终端模拟器:
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
Run Code Online (Sandbox Code Playgroud)
而且您似乎也从非图形 tty 登录:
argento tty2 15:11 1:01 0.09s 0.09s -bash
Run Code Online (Sandbox Code Playgroud)
其中每一个都是您的 shell 的一个单独实例,每个都算作自己的会话。
小智 5
1. 尽管用户登录到单个进程(shell 是他们的命令行界面),但用户最终会运行许多进程作为操作的结果,例如:
-> 在后台运行非交互式任务。
-> 通过作业控制在交互式任务之间切换。
-> 启动通过管道协同工作的多个进程。
-> 运行窗口系统,如 X 窗口系统,允许打开多个终端窗口。
2. 为了处理所有这些进程,内核需要形成由这些进程组成的进程组。
3. 为了进一步根据用户管理这些进程组,将这些组按用户划分为会话。(注意这里的用户不是linux用户,而是shell或终端代表用户。同一台机器上的两个终端由同一个linux用户登录在这里代表 2 个不同的用户,因此代表 2 个不同的用户会话。一个终端只能控制单个会话的终端)。
为该“用户”或会话运行 shell 的进程称为会话领导者。
4. 另请注意,按“x”按钮关闭终端不会让您退出该终端。该终端一直在后台运行。如果您想从终端结束会话,您必须按 CTRL+D 或退出从那里注销。
5. 当您从终端注销时,内核会发送 SIGHUP 信号(类似于 kill -1)到会话领导者的进程。现在,在终端中运行的所有其他进程都是该会话领导者的子进程。这些子进程形成了由这个会话领导进程(父进程)控制的进程组。
6. 会话领导进程向每个子进程发送SIGHUP,一些进程终止,而一些进程可以选择不终止(那些暂停或在后台运行)。那些选择不终止的会话在会话结束时成为孤儿,并立即被 init 进程(Linux 机器中所有进程的父进程)采用。
有关更多信息,请参阅链接Linux 开发的过程模型
| 归档时间: |
|
| 查看次数: |
16224 次 |
| 最近记录: |