![为什么 cat /proc/[pid]/pagemap 没有给出任何输出?](https://linux22.com/image/137107/%E4%B8%BA%E4%BB%80%E4%B9%88%20cat%20%2Fproc%2F%5Bpid%5D%2Fpagemap%20%E6%B2%A1%E6%9C%89%E7%BB%99%E5%87%BA%E4%BB%BB%E4%BD%95%E8%BE%93%E5%87%BA%EF%BC%9F.png)
当我使用该命令时cat /proc/<pid>/pagemap
,我没有得到任何输出。通常我会得到一些二进制输出,但现在我一开始什么也没有得到。
输入命令后一小时左右就会出现输出cat /proc/<pid>/pagemap
。我尝试了不同的内核版本但问题仍然存在。
答案1
/proc/[pid]/pagemap
是一个虚拟文件,具有 2 25、 64 位宽的页面条目。对于给定程序,大多数条目将为 0x00000000。您的方法有两个问题cat /proc/[pid]/pagemap
:
- 打印这样的文件需要花费大量的时间。
- 该文件由非 ASCII 可打印字符的条目组成。
我们可以通过以下方式解决上述问题:
- 用于获取虚拟地址并在文件
/proc/[pid]/maps
中查找位置。pagemap
- 使用 hexdump 而不是 cat 来打印条目。
您可以参考查看进程的页表有关相同内容的更详细的研究。