需要获取top命令的源代码并找出top命令与Linux中/proc/目录的关联。

4
我需要 top 的源代码,但我在任何地方都找不到它。另外,我想了解一下 /proc 目录到底包含什么信息。我看到它有标号为 1、2、3、4……的一系列文件夹,这些文件夹中似乎有一组相同的文件。我想知道这些是当前机器上运行进程的目录。
另外,我想知道 TOP 是如何连接到这个文件夹的,因为有人告诉我 TOP 通过获取这些目录中的数据来监控进程。我想知道 TOP 究竟从哪个文件中获取特定进程的 CPU 使用率。如果太复杂的话,如果您能指出我可以真正理解这一点的代码部分,那就太好了!
谢谢您的帮助 Shouvik
3个回答

9

您能否向我解释一下TOP和/proc/文件夹之间的关系。我想知道TOP从哪个文件中获取特定进程的CPU使用情况。谢谢。 - Shouvik

2

procfs基本上是系统和进程信息的文件抽象。

编号的文件夹是当前正在运行的进程,文件夹名称与PID相关。


您可以使用以下命令跟踪top或任何其他进程读取的文件:

strace -e open top

或在树莓派上

strace -e openat top

使用grep更加通用

strace top | grep open

例如,当您获得输出时,U(您)可以使用以下方法:
...
openat(AT_FDCWD, "/proc/7353/stat", O_RDONLY|O_LARGEFILE) = 8
openat(AT_FDCWD, "/proc/7353/statm", O_RDONLY|O_LARGEFILE) = 8
...

在这里,您可以看到top打开了文件

/proc/[pid]/stat

其中包含有关进程的某些信息。


1

top是procps的一部分,是的,那些数字是进程ID。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接