procfsについて
procfsとは
中身を見てみる
まずはecho $$
を実行。
実行例:
echo $$
実行結果:
9667
すると、ターミナルのプロセスIDが手に入る。
その後、/proc
内部にある、入手したプロセスIDと合致するディレクトリを見つける。
サンプル実行例
ll /proc/9667/
サンプル実行結果
合計 0 dr-xr-xr-x 9 minegishiminami minegishiminami 0 6月 14 17:49 ./ dr-xr-xr-x 381 root root 0 6月 14 14:20 ../ -r--r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 arch_status dr-xr-xr-x 2 minegishiminami minegishiminami 0 6月 14 17:56 attr/ -rw-r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 autogroup -r-------- 1 minegishiminami minegishiminami 0 6月 14 17:56 auxv -r--r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 cgroup --w------- 1 minegishiminami minegishiminami 0 6月 14 17:56 clear_refs -r--r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:50 cmdline -rw-r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 comm -rw-r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 coredump_filter -r--r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 cpuset lrwxrwxrwx 1 minegishiminami minegishiminami 0 6月 14 17:56 cwd -> /home/minegishiminami/myworking/ -r-------- 1 minegishiminami minegishiminami 0 6月 14 17:56 environ lrwxrwxrwx 1 minegishiminami minegishiminami 0 6月 14 17:50 exe -> /bin/bash* dr-x------ 2 minegishiminami minegishiminami 0 6月 14 17:49 fd/ dr-x------ 2 minegishiminami minegishiminami 0 6月 14 17:56 fdinfo/ -rw-r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 gid_map -r-------- 1 minegishiminami minegishiminami 0 6月 14 17:56 io -r--r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 limits -rw-r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 loginuid dr-x------ 2 minegishiminami minegishiminami 0 6月 14 17:56 map_files/ -r--r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 maps -rw------- 1 minegishiminami minegishiminami 0 6月 14 17:56 mem -r--r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 mountinfo -r--r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 mounts -r-------- 1 minegishiminami minegishiminami 0 6月 14 17:56 mountstats dr-xr-xr-x 59 minegishiminami minegishiminami 0 6月 14 17:56 net/ dr-x--x--x 2 minegishiminami minegishiminami 0 6月 14 17:56 ns/ -r--r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 numa_maps -rw-r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 oom_adj -r--r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 oom_score -rw-r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 oom_score_adj -r-------- 1 minegishiminami minegishiminami 0 6月 14 17:56 pagemap -r-------- 1 minegishiminami minegishiminami 0 6月 14 17:56 patch_state -r-------- 1 minegishiminami minegishiminami 0 6月 14 17:56 personality -rw-r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 projid_map lrwxrwxrwx 1 minegishiminami minegishiminami 0 6月 14 17:56 root -> // -rw-r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 sched -r--r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 schedstat -r--r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 sessionid -rw-r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 setgroups -r--r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 smaps -r--r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 smaps_rollup -r-------- 1 minegishiminami minegishiminami 0 6月 14 17:56 stack -r--r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:50 stat -r--r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 statm -r--r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 status -r-------- 1 minegishiminami minegishiminami 0 6月 14 17:56 syscall dr-xr-xr-x 3 minegishiminami minegishiminami 0 6月 14 17:56 task/ -r--r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 timers -rw-rw-rw- 1 minegishiminami minegishiminami 0 6月 14 17:56 timerslack_ns -rw-r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 uid_map -r--r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:56 wchan
現在進行形で開いているターミナルについての情報が大量に出てきた。
このproc配下には大量の情報がある。
コマンドを見てみる
/proc/<PID>/cmdline
にはそのプロセスで起動したコマンドが格納される
実行例:
cat /proc/9667/cmdline
実行結果:
bash
/proc/<PID>/stat
にはCPU使用時間などの統計情報
実行例:
ll /proc/9667/stat
実行結果:
-r--r--r-- 1 minegishiminami minegishiminami 0 6月 14 17:50 /proc/9667/stat
psコマンドの情報を見てみる
psコマンドの情報を確認する。
strace -o log.txt ps
すると、/proc/<PID>/...
配下の情報を大量に抽出していることが分かる
openat(AT_FDCWD, "/proc/4/stat", O_RDONLY) = 6 read(6, "4 (rcu_par_gp) I 2 0 0 0 -1 6923"..., 2048) = 155 close(6) = 0 openat(AT_FDCWD, "/proc/4/status", O_RDONLY) = 6 read(6, "Name:\trcu_par_gp\nUmask:\t0000\nSta"..., 2048) = 938 close(6) = 0 stat("/proc/6", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0 openat(AT_FDCWD, "/proc/6/stat", O_RDONLY) = 6 read(6, "6 (kworker/0:0H-kblockd) I 2 0 0"..., 2048) = 165 close(6) = 0 openat(AT_FDCWD, "/proc/6/status", O_RDONLY) = 6 read(6, "Name:\tkworker/0:0H-kblockd\nUmask"..., 2048) = 946 close(6) = 0 stat("/proc/8", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0 openat(AT_FDCWD, "/proc/8/stat", O_RDONLY) = 6 read(6, "8 (kworker/u16:0-i915) I 2 0 0 0"..., 2048) = 168 close(6) = 0 openat(AT_FDCWD, "/proc/8/status", O_RDONLY) = 6 read(6, "Name:\tkworker/u16:0-i915\nUmask:\t"..., 2048) = 953 close(6) = 0 stat("/proc/9", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0 openat(AT_FDCWD, "/proc/9/stat", O_RDONLY) = 6 read(6, "9 (mm_percpu_wq) I 2 0 0 0 -1 69"..., 2048) = 157