top はいくつかのシステムファイルを読み取りますか?

top はいくつかのシステムファイルを読み取りますか?

私の推測が正しければ、 の出力は を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

関連情報