本文为摘录,原文为: https://linuxiac.com/how-to-terminate-user-session-in-linux/

1 Linux 中的 TTY 和 PTS 是什么?

在 Linux 中,“PTS"和"TTY"都指不同的终端设备,用于用户与操作系统之间的通信。它们作为输入命令和从系统接收输出的接口。

  • TTY (Teletype, 电传打字机)

    • “TTY"最初是指电传打字机,一种类似打字机的设备,用于计算机早期的输入和输出。
    • 在现代 Linux 系统中,TTY 代表物理或虚拟控制台,用户可以直接与系统交互。
  • PTS(Pseudo-Terminal Slave, 伪终端从属)

    • PTS 代表伪终端从属。
    • 它是一种虚拟终端,模拟硬件终端,
    • 但没有直接连接到任何物理设备
    • 系统创建和管理它以支持终端复用、远程登录和各种交互应用程序。

    例如,当您使用 终端仿真器应用程序 (如 GNOME 的终端或 KDE 的 Konsole)来获取对 Linux 系 统的 Shell 访问权限时,通常会使用伪终端。

    这些 仿真器 作为伪终端的“主”端,而终端内运行的 Shell 或进程则作为“从”端。

    当您打开多个终端窗口或选项卡时,每个窗口或选项卡对应一个单独的 PTS。例如,如果您打开了 三个终端窗口,则它们可能会被标识为 /dev/pts/0/dev/pts/1/dev/pts/2

总之,TTY 和 PTS 都是 Linux 中的终端设备,允许用户与操作系统交互。TTY 代表物理或虚拟控制 台,而 PTS 用于终端仿真器,并提供终端复用和远程登录的附加功能。

2 如何在 Linux 中终止被卡住/不需要的用户会话

你可以用两种方式来完成这个任务,我们将在下面分别介绍这两种方式。

2.1 Terminate User Session by TTY

我们将使用 w 命令获取有关我们 Linux 系统上已登录用户的信息。它显示有关当前已登录用户及其活动的信息。

当你运行 w 命令时,它为每个用户提供以下细节的摘要:

  • USER: 已登录用户的用户名。
  • TTY: 与用户会话关联的终端名称或设备(例如,/dev/tty1,pts/0)。
  • FROM: 用户登录的远程主机或 IP 地址。如果用户本地登录,则显示 TTY 的名称或“ - ”符号。
  • LOGIN@: 用户登录的日期和时间。
  • IDLE: 用户会话的非活动时间长度。如果用户主动使用终端,则会显示“旧”。
  • JCPU: 与用户会话相关的所有进程使用的总 CPU 时间。
  • PCPU: 用户当前进程使用的 CPU 时间。
  • WHAT: 由用户或终端关联进程执行的命令。

下面是 w 命令的输出示例:

从上面这个例子的输出中可以看到,有三个登录用户——两个本地用户和一个远程用户。

为了终止名为 “linuxiac” 远程登录用户的会话,我们将在 Linux 中使用 pkill 命令,并使用选项 “-KILL” , 该选项意味着 Linux 进程必须立即被终止(而不是优雅地关闭)。请使用 “-t” 标志指定 TTY 的名称。

pkill -KILL -t pts/1

就是这样。从使用 w 命令进行重新检查可以看到,用户在我们的系统上的会话已立即终止。

2.2 按进程 ID 终止用户会话

我们将展示第二种方法,即使用进程 ID 终止用户会话。为此,再次执行 w 命令以获取已登录用户的列表以及它们关联的 TTY/PTS。 然后,一旦我们确定了 TTY/PTS 会话,使用 "ps" 命令和 "-ft" 参数来查找它的 PID:

ps -ft [TTY/PTS]

最后,使用 kill 命令和 -9 (无条件终止一个进程)开关,传递进程 ID。例如:

kill -9 4374

因此,用户会话立即被终止。

2.3 Conclusion

在 Linux 系统管理领域中,了解如何终止卡住或不需要的用户会话是至关重要的。在本文中,我们探讨了两种有效的方法来完成此任务:TTY / PTS 或进程 ID。

  • TTY / PTS 方法提供了一个简单的方式来终止用户会话。
  • 通过进程 ID 终止会话提供了一种更精确和直接的方法;使用哪种方法完全取决于您自己的决定。

请记住,无论您选择 TTY / PTS 方法还是进程 ID 方法,行使谨慎是至关重要的。确保终止正确的用户会话或进程,以防止意外数据丢失或意外后果。

需要更多详细信息吗?请查阅“pkill”和“kill”命令的手册页面。

https://linuxiac.com/how-to-terminate-user-session-in-linux/