如何终止无响应的 Linux 会话
文章目录
使用 Linux 终端时,有时会卡住,失去响应,这时应该如何终止会话?
对于Linux用户来说,遇到卡住或不想要的用户会话可能是一种令人沮丧的体验。同时,这些会话可能会使您的系统面临潜在风险,使其容易受到未经授权的访问或数据泄露的影响。
无论是由行为不端的应用程序、系统故障还是用户错误引起的,这些延迟的会话都会阻碍生产力,并危及系统的安全性和性能。
但不要害怕;本文旨在为您提供重新获得控制权和维护平稳运行的Linux系统的知识和工具。通过学习处理这些情况的正确方法,您可以确保一个更安全的计算环境,并保护您的宝贵数据。
然而,在我们继续之前,我们需要澄清两个术语 TTY 和 PTS 的含义,它们在 Linux 中直接涉及到终止用户会话。
在Linux中什么是 TTY 和 PTS?
在Linux中,“PTS”和“TTY”都指用于在用户和操作系统之间进行通信的不同终端设备。它们充当输入命令和接收系统输出的接口。
TTY (Teletype)
“TTY”最初代表电传打字机(Teletype),这是一种类似打字机的设备,在计算机早期用于输入和输出。
在现代 Linux 系统中,TTY 代表一个物理或虚拟控制台,用户可以在此处直接与系统互动。
PTS (Pseudo-Terminal Slave)
PTS代表伪终端从设备。它是一个虚拟终端,模拟硬件终端,但不直接连接到任何物理设备。
相反,系统创建并管理它,以支持终端多路复用、远程登录和各种交互式应用程序。
例如,当您使用终端模拟器应用程序(如GNOME的终端或KDE的Konsole)来访问Linux系统时,通常会使用伪终端。
这些仿真器充当伪终端的“主”端,而shell或在终端中运行的进程充当“从”端。
当您打开多个终端窗口或选项卡时,每个窗口或选项卡对应一个单独的PTS。例如,如果打开三个终端窗口,它们可能被标识为/dev/pts/0、/dev/pts/1和/dev/pts/2。
总之,TTY和PTS都是Linux中的终端设备,允许用户与操作系统交互。TTY表示物理或虚拟控制台,而PTS用于终端模拟器,并提供多路复用和远程登录的附加功能。
有了这样的澄清,我们现在可以继续讨论主要议题。
如何在Linux中终止阻塞/不需要的用户会话
阻塞我们一般俗称“卡住” 😆
你可以通过两种方式来实现这一点,因此我们将在下面分别进行研究。
通过 TTY 终止用户会话
我们将使用 w
命令来获取有关我们 Linux 系统上已登录用户的信息。它显示了当前登录用户的信息和他们的活动。
当你运行 w
命令时,它会为每个用户提供以下细节的摘要:
- USER: 当前登录用户的用户名
- TTY: 与用户会话相关联的终端名称或设备(例如/dev/tty1,pts/0)
- FROM: 用户登录的远程主机或IP地址。如果用户在本地登录,它将显示 TTY’s name 或者
-
符号 - LOGIN@: 用户登录的日期和时间
- IDLE: 用户会话处于非活动状态的持续时间。如果用户主动使用终端,它将显示
old
- JCPU: 与用户会话相关联的所有进程使用的CPU总时间
- PCPU: 用户当前进程使用的CPU时间.
- WHAT: 用户执行的命令或与终端相关联的进程
以下是 w
命令的输出示例:
获取在Linux上登录用户的信息
正如您从上面的示例输出中看到的,有三个登录的用户——两个是本地用户,一个是远程用户。
要终止远程登录用户“linuxiac”的用户会话,我们将在Linux中使用带有选项-KILL
的pkill
命令,这意味着Linux进程必须立即终止(而不是优雅地)。使用“-t
”标志指定TTY的名称。
|
|
在Linux上通过 TTY/PTS 名称终止一个用户会话
仅此而已。从w
命令的重新检查可以看出,用户与我们系统的会话立即终止。
按进程ID终止用户会话
我们将向您展示的第二种方法使用进程ID终止用户会话。为此,我们再次执行w
命令,以获取登录用户的列表及其相关的TTY/PTS
。
然后,一旦我们确定了TTY/PTS
会话,就使用带有-ft
参数的ps
命令来查找其PID:
|
|
最后,使用带有传递进程ID的-9
(强制终止进程)开关的kill命令。例如:
|
|
在Linux上通过进程ID终止用户会话
结果,用户会话立即终止。
如何终止一个阻塞的前台进程
大部分程序在终端的前台启动后,使用 CTRL-C
是可以退出当前运行的程序的。但有一部分程序由于没有处理输入信号,或者正在请求网络连接阻塞了输入信号的处理,这时候使用 CTRL-C
是不管用的。
这种情况的处理办法就是,先使用 CTRL-Z
把程序放入后台,然后通过 ps
命令找到程序进程的ID号,最后使用 kill -9 PID
的方式强行把进程杀掉。 😁
针对这个情况的另外一个办法,就是再开一个登录窗口,把之前的登录用户使用上面提到的两种方式结束用户会话。
结论
在Linux系统管理领域中,知道如何终止阻塞或不需要的用户会话是至关重要的。在本文中,我们探索了两种有效的方法来完成这项任务:TTY/PTS或流程ID。
TTY/PTS方法提供了一种直接终止用户会话的方法。另一方面,通过进程ID终止会话提供了一种更精确、更直接的方法;使用这两种方法中的哪一种?这个决定完全取决于你。
请记住,无论您选择TTY/PTS方法还是流程ID方法,谨慎行事都是至关重要的。确保终止正确的用户会话或进程,以防止意外数据丢失或意外后果。查看pkill
和kill
命令手册页获取更多详细说明。
公众号
欢迎关注我的公众号,同步更新
参考资料