如果我是正确的, 的输出free
来自 阅读/proc/meminfo
。
在 的输出中top
,
内存部分的摘要不是特定于某个进程也来自吗
/proc/meminfo
?每个进程的内存信息来自哪些系统文件?
谢谢。
答案1
您可以使用它strace
来找出程序正在使用哪些文件。例如:
strace -f -o top.log -e trace=file top
然后只需按q
退出即可top
。top.log
已创建一个文件,显示top
运行时访问了哪些文件。
本质上,它似乎是/proc/<pid>/{stat,statm}
针对所有正在运行的进程的 PID,以及以下文件(/proc/
以及所有已删除的库):
主机 ~ # cat top.log | sed 's/.*"\([^"]*\)".*/\1/' | grep -vE '(/proc/|/lib/)' | 排序 | uniq 9375 +++ 以 0 +++ 退出 /dev/空 /etc/ld.so.cache /etc/ld.so.nohwcap /etc/ld.so.preload /etc/当地时间 /etc/nsswitch.conf /etc/密码 /etc/terminfo /etc/terminfo/s/screen /etc/toprc /lib /进程 /sys/devices/系统/cpu/在线 顶部 /usr/lib /usr/share/locale/de_DE/LC_MESSAGES/procps-ng.mo /usr/share/locale/de_DE.utf8/LC_MESSAGES/procps-ng.mo /usr/share/locale/de_DE.UTF-8/LC_MESSAGES/procps-ng.mo /usr/share/locale/de/LC_MESSAGES/procps-ng.mo /usr/share/locale/de.utf8/LC_MESSAGES/procps-ng.mo /usr/share/locale/de.UTF-8/LC_MESSAGES/procps-ng.mo /usr/share/locale/locale.alias /usr/share/terminfo /var/运行/utmp /var/运行/utmpx