如果我是正確的, 的輸出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