/proc 目录结构仅显示进程,但也包含线程的目录

/proc 目录结构仅显示进程,但也包含线程的目录

我在研究 Linux 的内部结构时了解到进程的文件描述符是如何保存的/proc/PID/fd。我尝试研究 Ubuntu 18.04 安装,但遇到了一些我无法理解的事情。
我有一个 chromium-browser 进程 (pid 6949),它有一个线程 (pid 6961),我确认正在使用htop

下面附图显示了 3 个命令的输出。

  1. 不存在名为 6961 的目录/文件。
  2. 我有预感我可能不被允许读取该位置,因此我尝试使用 sudo,但目录不存在。
  3. 我将目录更改为 6961,它允许我进行更改!

ls如果存在一个我可以访问的有效位置,我不明白为什么没有列出名为 6961 的目录cd
我也尝试使用标志-a-h和,-l但 ls 根本没有列出目录 /proc/6961。

我在这里遗漏了什么?

akhil@hobbes:/proc$ ls /proc | grep 6961
akhil@hobbes:/proc$ sudo ls /proc | grep 6961
akhil@hobbes:/proc$ cd /proc/6961
akhil@hobbes:/proc/6961$

答案1

此行为的解释可以在proc(5) 手册页。以下是概述部分:

   /proc/pid subdirectories
          ...

          The /proc/pid subdirectories are visible when iterating
          through /proc with getdents(2) (and thus are visible when
          one uses ls(1) to view the contents of /proc).

   /proc/tid subdirectories
          ...

          The /proc/tid subdirectories are not visible when
          iterating through /proc with getdents(2) (and thus are not
          visible when one uses ls(1) to view the contents of
          /proc).

进程(线程 ID 等于其进程 ID 的线程)可通过/proc使用来查看ls。其他线程无法通过 使用 来查看ls,但指定其路径后即可访问其目录。

相关内容