bash linux mint 中一个终端有两个进程id

bash linux mint 中一个终端有两个进程id

我在 Linux Mint 中运行一个 Bash 终端。我想查看正在运行的终端的进程 ID。

所以我尝试了两件事:

ps -C 'bash'

ls -l /proc/*/exe | grep bash

这两个都给出了两个进程 ID。有人能解释一下为什么只有一个终端有这两个进程 ID 吗?如何在两个终端之间识别出真正的进程 ID?

谢谢

答案1

端子没有进程 ID。

当然,进程有进程 ID。终端有自己的 ID,您会在wwho和 (在TTY列中)等工具的输出中看到它们ps。但这些不是进程 ID。

进程和终端之间的关系并不是 1:1。此外,正如grawity指出的那样,不是一个终端。终端是一种设备。shell 是一种程序。bash程序是一种 shell,其输入和输出(至少在交互模式下)从终端读取并写入终端设备

个人计算机 Linux 和 Unices 上的终端通常不真实的物理设备,插入某种串行端口。相反,它们要么虚拟的终端或终端。两者都是终端仿真器程式。

  • 对于虚拟终端来说,该程序嵌入到操作系统内核中(尽管已经有举措改变这一点),并且它没有进程 ID,因为它本身并不是一个独立的进程。
  • 对于伪终端,有一个进程管理设备的“主”端,并以某种方式显示终端的内容。通常它是一个 GUI 程序,例如xtermlxterminalkonsolegnome-terminalrxvt。(或者,它可以是 SSH 或 TELNET 守护进程。)这些都有进程 ID。但它是终端模拟器这是一个过程,而不是伪终端设备。

至于为什么您看到两个bash进程:您有两个bash进程正在运行。就这么简单。它们不一定与同一终端设备相关联,甚至与任何终端设备相关联。同样,TTY输出中的列ps将告诉您什么控制终端每个进程都有。(终端没有进程 ID,但进程在某种程度上有终端 ID。)

相关内容