Unix 中的进程

Unix 中的进程

当我登录到我的 unix 终端并执行以下操作时ps

bash-4.3$ ps
  PID TTY          TIME CMD
    7 pts/0    00:00:00 sh
   16 pts/0    00:00:00 bash
   17 pts/0    00:00:00 ps

我知道bashprocess 是正在运行的 shell,但是其他两个名为sh和 的进程又如何呢ps

哪儿来的呢?

运行ps -f返回:

UID        PID  PPID  C STIME TTY          TIME CMD
cg           7     1  0 01:04 pts/0    00:00:00 sh
cg          16     7  0 01:04 pts/0    00:00:00 /bin/bash
cg          18    16  0 01:18 pts/0    00:00:00 ps -f

那么这是否意味着bashshell 正在作为shshell 的进程运行?

答案1

实用程序是一种命令语言解释器,应执行从命令行字符串、标准输入或指定文件读取的命令。应用程序应确保要执行的命令以中描述的语言表达外壳命令语言

附注显示当前正在运行的进程。这是有道理的,因为我们只是在运行“嘘”,“重击”“ps”目前使用此终端。

答案2

这是一个有趣的三人组。通常,当您登录并运行不带标志的 ps 时,您将获得登录 shell 和 ps 程序。默认情况下,ps 将显示具有相同 EUID 和相同 tty 的所有进程。

所以 shell 和 ps 的出现并不是很不寻常。

你有两件有趣的事情:

  • 第一个 shell 的父 PID 是 PID 1
  • 你有两个贝壳

在我的系统上,父进程 ID 用于登录进程或窗口终端进程。我不确定你的 PPID 是如何为 1 的。

就像您登录后,您的登录 shell 是 sh,然后您输入了 bash。

答案3

您列出了 3 个进程。

Unix 中 sh 的问题在于 Bourne shell。许多 Unix 将 sh 作为默认 shell,然后又提供了 Bourne Again shell (bash),因为它提供了很多 sh 没有的选项。

如果您意识到,您的 sh 的 PID 低于您的 bash。 bash 在 sh 之后运行,可能超过它。

ps 出现是因为当它执行时,该命令正在使用中,所以它的进程在机器中。

相关内容