尽管具有模式 444 权限,但无法读取 /proc/<pid>/smaps

Yen*_*rst 5 linux permissions file-permissions

我正在尝试编写一个脚本来检查正在运行的进程的内存使用情况。为此,它需要读取 /proc/*/smaps 文件。

root 拥有的进程的权限设置为“-r--r--r--”,每个人都应该可读,对吗?

ls -l 的示例输出 [编辑:现在具有目录权限]

ls -l /proc/939/smaps
-r--r--r-- 1 root root 0 2012-07-11 12:11 /proc/939/smaps

ls -ld /proc/939/smaps
-r--r--r-- 1 root root 0 2012-07-11 12:11 /proc/939/smaps
Run Code Online (Sandbox Code Playgroud)

尝试阅读:

cat /proc/939/smaps
cat: /proc/939/smaps: Permission denied
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么明显的东西吗?

EDIT2:经过进一步调查,其他文件(例如 /proc//cmdline)是可读的,因此它可能只是 smaps 文件的特殊情况?

pim*_*pim 1

出于安全原因,阅读/proc/PID/smaps需要这种CAP_SYS_PTRACE能力。

您可以使用 将此功能添加到您的应用程序中sudo setcap cap_sys_ptrace+ep YOUR_APPLICATION