procって何?「Linux用語解説」

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