psコマンドはどのように機能しますか?

psコマンドはどのように機能しますか?

課題を実行するには、独自のコマンドバージョンを実装する必要がありますがps、情報をどこから取得するのかわかりません。すべてのプロセス情報はどこにありますか?

ベストアンサー1

Linuxでは、このpsコマンドは次のように動作します。プロセスファイルシステム。このディレクトリには、プロセスに関する情報を提供するさまざまなファイルが含まれています。/proc/PIDPID。プロセスがこれらのファイルの内容を読み取ると、カーネルはそれを動的に生成します。

/proc次のトピックに関するドキュメントを見つけることができます。proc(5) マニュアルページそしてカーネル文書

psコマンドが何をしているのかを観察すると、それを直接確認できます。strace、プロセスで実行されたシステムコールのコマンドを一覧表示します。

% strace -e open ps
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libprocps.so.3", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/sys/devices/system/cpu/online", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
open("/proc/self/stat", O_RDONLY)       = 3
open("/proc/uptime", O_RDONLY)          = 3
open("/proc/sys/kernel/pid_max", O_RDONLY) = 4
open("/proc/meminfo", O_RDONLY)         = 4
open("/proc/1/stat", O_RDONLY)          = 6
open("/proc/1/status", O_RDONLY)        = 6
open("/proc/2/stat", O_RDONLY)          = 6
open("/proc/2/status", O_RDONLY)        = 6
open("/proc/3/stat", O_RDONLY)          = 6
open("/proc/3/status", O_RDONLY)        = 6

% strace -e open ps
open("/proc/1/stat", O_RDONLY)          = 6
open("/proc/1/status", O_RDONLY)        = 6
open("/proc/1/cmdline", O_RDONLY)       = 6

おすすめ記事