当您检查正在运行的进程时,您会在 ps 命令的输出中注意到一个 TTY 字段。此字段很重要,因为它指示执行该命令的控制终端。理解这个概念是有效管理进程的关键。
什么是 TTY
TTY 是“Teletype”(电传打字机)的缩写,历史上它是与计算机交互的物理设备。在现代 Linux 系统中,TTY 指的是为进程提供标准输入和输出的终端。
您会遇到两种主要的终端类型:终端设备和伪终端设备。
终端设备与伪终端
A 真正的终端设备是允许您直接输入命令和查看输出的原生控制台。您可以通过切换到虚拟控制台来体验这一点。在许多系统上,您可以按 Ctrl-Alt-F1 访问 TTY1。您将在一个纯文本环境中看到一个登录提示符,没有图形界面。这是一个经典的终端设备。要返回图形会话,您通常可以使用 Ctrl-Alt-F7(确切的按键组合可能有所不同)。
A 另一方面,伪终端(PTS)是您最常使用的。当您在图形桌面环境中打开终端应用程序时,您使用的是 PTS。它们在窗口中模拟了一个终端。如果您检查 shell 的 ps tty 输出,您会看到其 TTY 列为 pts/*。
控制终端的作用
大多数进程都绑定到一个控制终端。这意味着进程的生命周期与其启动它的终端会话相关联。例如,如果您在终端窗口中运行像 find 这样的程序然后关闭该窗口,find 进程也会被终止。
没有控制终端的进程
有些进程被称为守护进程(daemons),它们被设计为在后台运行并管理系统服务。这些进程通常在系统启动时启动,仅在系统关闭时停止。
为了防止它们被意外终止,守护进程不附加到控制终端。当您学习如何使用 ps 来检查这些进程时,您会在 TTY 列中看到一个问号(?)。这个 ? 表示该进程没有控制终端,并且独立于任何用户会话运行。