私の推測が正しければ、 の出力は を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/)' | sort | uniq 9375 +++ は 0 +++ で終了しました /dev/null /etc/ld.so.cache /etc/ld.so.nohwcap プリロード /etc/ローカルタイム 設定ファイル /etc/passwd /etc/terminfo /etc/terminfo/s/スクリーン /etc/toprc /ライブラリ /proc /sys/デバイス/システム/CPU/オンライン 上 ライブラリ /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/terminfo /var/run/utmp /var/run/utmpx