完全に個人的なメモなので、間違っている可能性あり
書いたっきりslack上で放置していたので、自分で後で見返せるように供養しておく
まあそもそもman読めよって話ではあるのだけれど潜るだけ潜ってみる
https://man7.org/linux/man-pages/man5/procfs.5.html
/proc/<pid>/attr
このディレクトリの内容はセキュリティ関連の属性を設定するために読み書きできるファイル
SELinuxをサポートするために追加されたけど他のセキュリティモジュールをサポートすることを意図して作られた
このディレクトリはKernelがCONFIG_SECURITYで構成されている場合にのみ存在する
/proc/<pid>/attr/current
プロセスの現在のセキュリティ属性を表す
/proc/<pid>/attr/exec
後続のexecveでプロセスに割り当てる属性を表す
/proc/<pid>/attr/fscreate
open/mkdir/symlink/mknodへの後続の呼び出しによって作成されたファイルに割り当てる属性を表す
/proc/<pid>/attr/keycreate
プロセスがセキュリティコンテキストをこのファイルに書き込むと、その後に作成されるすべてのキーにこのコンテキストのラベルが付けられる
詳しくは下を読む
https://github.com/torvalds/linux/blob/master/Documentation/security/keys/core.rst
/proc/<pid>/attr/prev
最後のexecveの前のプロセスのセキュリティコンテキストが含まれている
/proc/<pid>/attr/socketcreate
プロセスがセキュリティコンテキストをこのファイルに書き込む場合、その後に作成されるすべてのソケットにこのコンテキストがラベル付けされる
/proc/<pid>/autogroup
プロセスのautogroup(タスクグループ)メンバーシップファイル
このファイルを使ってautogroupに割り当てられたcpuの帯域幅を変えられるらしい(nice値で+19(低優先度) ~ -20(高優先度)で制御できる)
https://man7.org/linux/man-pages/man7/sched.7.html
/proc/<pid>/auxv
実行時にプロセスに渡されるELFインタープリター情報
/proc/<pid>/cgroup
linux control groups
https://man7.org/linux/man-pages/man7/cgroups.7.html
/proc/<pid>/clear_refs
書き込み専用で、プロセスの少勇者のみが書き込み可能
smapsのアウトプットに表示されているページが参照しているビットをクリアする
/proc/<pid>/cmdline
実行しているコマンドの引数を表示
/proc/1 # cat cmdline
/sbin/tini--node/opt/src/server.js
/proc/<pid>/comm
プロセスに関連付けられたコマンド名を表示する
同じプロセス内の異なるスレッドは /proc/<pid>/comm/<tid>/comm
を介してアクセスできる異なるcomm valuesを持つ場合がある
/proc/1 # cat comm
tini
coredump_filter
プロセスに対してコアダンプが実行された場合に、コアダンプファイルに書き込まれるメモリセグメントを制御できる
https://man7.org/linux/man-pages/man5/core.5.html
cpuset
そのプロセスを実行するために仕様できるCPUセットに関しての情報がある
https://man7.org/linux/man-pages/man7/cpuset.7.html
/proc/1 # cat cpuset
/docker/bf7809b99cdc4e35f51463dbc091bacc2b54bb6bbeddce56c3566b3d3553552d
cwd
現在の作業ディレクトリへのリンク
今回であれば /opt/src
となる
/proc/1 # ls -l | grep cwd
lrwxrwxrwx 1 root root 0 Feb 20 12:06 cwd -> /opt/src
environ
環境変数の値
/proc/1 # cat environ
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binHOSTNAME=bf7809b99cdcNODE_VERSION=15.8.0YARN_VERSION=1.22.5HOME=/root
exe
このプロセスの実行可能ファイルへのリンク
/proc/1 # ls -l | grep exe
lrwxrwxrwx 1 root root 0 Feb 20 12:06 exe -> /sbin/tini
fd
全てのファイル記述子(FileDescriptors)を含むディレクトリ
fdinfo
ファイル記述子に関する情報を取得できる
内容は、ファイル記述子によって参照されるファイルのタイプによって異なる
pos: ファイルオフセットを示す10進数
flags: ファイルアクセスモードとファイルステータスフラグを表示する8進数(https://man7.org/linux/man-pages/man2/open.2.html)
mnt_id: マウントポイントのid(詳しくはmountinfo参照)
/proc/1/fdinfo # cat 0
pos: 0
flags: 0100002
mnt_id: 487
/proc/1/fd # ls -alh | grep "0 ->"
lrwx------ 1 root root 64 Feb 20 12:02 0 -> /dev/null
gid_map
プロセスpidのユーザー名前空間内のグループIDのマッピングを公開する(uid_mapも同様にユーザIDのマッピング)
https://man7.org/linux/man-pages/man7/user_namespaces.7.html
/proc/1 # cat gid_map
0 0 4294967295
io
プロセスのI/Oの統計
rchar(characters read): このタスクによってストレージから読み取られたバイト数(terminal I/O等が含まれるので実際の物理ディスクが必要かどうかには影響されない(ページキャッシュからの読み取りで満たされている場合がある))
wchar(characters written): このタスクによってディスクに書き込まれた、または書き込まれるバイト数
syscr(read syscalls): 読み取りI/O操作数(要するにread/pread等のsyscallの回数)
syscw(write syscalls): 書き込みI/O操作数(要するにwrite/pwrite等のsyscallの回数)
read_bytes(bytes read): ストレージレイヤーからフェッチされたバイト数をカウントする
write_bytes(bytes write): ストレージレイヤーへ送信されたバイト数をカウントする
cancelled_write_bytes: ページキャッシュのトランケートによってこのプロセスが発生しなかったバイト数を表す(ちょっと怪しい)
/proc/1 # cat io
rchar: 68666
wchar: 46
syscr: 45
syscw: 5
read_bytes: 28672
write_bytes: 0
cancelled_write_bytes: 0
limits
プロセスの各リソース制限のソフト/ハード制限及び単位が表示される
https://man7.org/linux/man-pages/man2/getrlimit.2.html
/proc/1 # cat limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes unlimited unlimited processes
Max open files 1048576 1048576 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 7418 7418 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
loginuid
プロセスのユーザID
4294967295はunsigned longで-1なので、デーモンとかだとデフォルトこれになるらしい
そのプロセスを誰が作ったかとか見るのに便利そうではある
https://prefetch.net/blog/2016/10/26/tracking-linux-uids-across-process-creation/
/proc/1 # cat loginuid
4294967295
map_files
メモリマップとファイルに対応するエントリが含まれている(https://man7.org/linux/man-pages/man2/mmap.2.html)
エントリは、メモリ領域の開始アドレスと終了アドレスのペアで名前付けされ、マップされたファイル自体へのシンボリックリンクとなる
/proc/1/map_files # ls -alh
total 0
dr-x------ 2 root root 0 Feb 20 12:06 .
dr-xr-xr-x 9 root root 0 Feb 20 12:02 ..
lr-------- 1 root root 64 Feb 20 21:08 56272c442000-56272c444000 -> /sbin/tini
lr-------- 1 root root 64 Feb 20 21:08 56272c444000-56272c446000 -> /sbin/tini
lr-------- 1 root root 64 Feb 20 21:08 56272c446000-56272c448000 -> /sbin/tini
lr-------- 1 root root 64 Feb 20 21:08 56272c448000-56272c449000 -> /sbin/tini
lr-------- 1 root root 64 Feb 20 21:08 56272c449000-56272c44a000 -> /sbin/tini
lr-------- 1 root root 64 Feb 20 21:08 7f84b6128000-7f84b613d000 -> /lib/ld-musl-x86_64.so.1
lr-------- 1 root root 64 Feb 20 21:08 7f84b613d000-7f84b6184000 -> /lib/ld-musl-x86_64.so.1
lr-------- 1 root root 64 Feb 20 21:08 7f84b6184000-7f84b61b8000 -> /lib/ld-musl-x86_64.so.1
lr-------- 1 root root 64 Feb 20 21:08 7f84b61b9000-7f84b61ba000 -> /lib/ld-musl-x86_64.so.1
lr-------- 1 root root 64 Feb 20 21:08 7f84b61ba000-7f84b61bb000 -> /lib/ld-musl-x86_64.so.1
maps
実行可能ファイルとライブラリファイルへのメモリのマップ
/proc/1 # cat maps
56272c442000-56272c444000 r--p 00000000 fe:01 3021452 /sbin/tini
56272c444000-56272c446000 r-xp 00002000 fe:01 3021452 /sbin/tini
56272c446000-56272c448000 r--p 00004000 fe:01 3021452 /sbin/tini
56272c448000-56272c449000 r--p 00005000 fe:01 3021452 /sbin/tini
56272c449000-56272c44a000 rw-p 00006000 fe:01 3021452 /sbin/tini
7f84b6128000-7f84b613d000 r--p 00000000 fe:01 1979988 /lib/ld-musl-x86_64.so.1
7f84b613d000-7f84b6184000 r-xp 00015000 fe:01 1979988 /lib/ld-musl-x86_64.so.1
7f84b6184000-7f84b61b8000 r--p 0005c000 fe:01 1979988 /lib/ld-musl-x86_64.so.1
7f84b61b9000-7f84b61ba000 r--p 00090000 fe:01 1979988 /lib/ld-musl-x86_64.so.1
7f84b61ba000-7f84b61bb000 rw-p 00091000 fe:01 1979988 /lib/ld-musl-x86_64.so.1
7f84b61bb000-7f84b61be000 rw-p 00000000 00:00 0
7fffaae31000-7fffaae52000 rw-p 00000000 00:00 0 [stack]
7fffaaee5000-7fffaaee8000 r--p 00000000 00:00 0 [vvar]
7fffaaee8000-7fffaaeea000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
mem
このプロセスによって保持されるメモリ(上記mapsと組み合わせるとseekしてメモリダンプしたりできるっぽい)
https://unix.stackexchange.com/questions/6301/how-do-i-read-from-proc-pid-mem-under-linux
https://blog.cloudflare.com/diving-into-proc-pid-mem/
mountinfo
プロセスのマウント名前空間のマウントポイント似関しての情報
左から順に
mount ID: マウントの一意のID(umount後に再利用可能)
parent ID: 親マウントのID(このマウント名前空間のツリーのルートの場合は自分自身/chrootとかで親マウントポイントがプロセスのルートディレクトリのそれにある場合は一致する親IDのレコードが表示されない)
major:miner: st_devの値(https://man7.org/linux/man-pages/man2/stat.2.html)
root: マウントのルートを形成するファイルシステム内のディレクトリのパス名
mount point: プロセスのルートディレクトリからの相対的なマウントポイントのパス名
mount options: https://man7.org/linux/man-pages/man2/mount.2.html
optional fields: "tag[:value]"形式で0個以上のフィールド(ない場合は表示すらされてなさそう)
separator: オプションフィールドの終わり(ハイフン)
filesystem: "type[.subtype]"形式でファイルシステムのタイプ
mount source: ファイルシステム固有の情報 or "none"
super options: スーパーブロック毎のオプション(https://man7.org/linux/man-pages/man2/mount.2.html)
/proc/1 # cat mountinfo
441 324 0:109 / / rw,relatime master:122 - overlay overlay rw,lowerdir=/var/lib/docker/overlay2/l/BDY7PMJU4CCICFFJZWBOXOJGBA:/var/lib/docker/overlay2/l/HVQZRB6QCR34A4LTMUYK7WUQIG:/var/lib/docker/overlay2/l/3E7SUGFIJZW4UVSM47THOR56GH:/var/lib/docker/overlay2/l/P354VKRAJXJOIEL4ENNME7AUB7:/var/lib/docker/overlay2/l/DLC43UAJ4KLVGILIWQ6GOIOJHA:/var/lib/docker/overlay2/l/6PG626FG6T6TEG5N4PTYOWTQWK:/var/lib/docker/overlay2/l/ORG2QBNC67IG6FMZVVFI2MJI3D,upperdir=/var/lib/docker/overlay2/1aa0c289cd2c7724c005b570f28f07c6a9b803855d3867e1fc97aa53ea7ba0e3/diff,workdir=/var/lib/docker/overlay2/1aa0c289cd2c7724c005b570f28f07c6a9b803855d3867e1fc97aa53ea7ba0e3/work
486 441 0:111 / /proc rw,nosuid,nodev,noexec,relatime - proc proc rw
487 441 0:112 / /dev rw,nosuid - tmpfs tmpfs rw,size=65536k,mode=755
488 487 0:113 / /dev/pts rw,nosuid,noexec,relatime - devpts devpts rw,gid=5,mode=620,ptmxmode=666
489 441 0:114 / /sys ro,nosuid,nodev,noexec,relatime - sysfs sysfs ro
490 489 0:115 / /sys/fs/cgroup rw,nosuid,nodev,noexec,relatime - tmpfs tmpfs rw,mode=755
491 490 0:29 /docker/bf7809b99cdc4e35f51463dbc091bacc2b54bb6bbeddce56c3566b3d3553552d /sys/fs/cgroup/cpuset ro,nosuid,nodev,noexec,relatime master:17 - cgroup cpuset rw,cpuset
492 490 0:30 /docker/bf7809b99cdc4e35f51463dbc091bacc2b54bb6bbeddce56c3566b3d3553552d /sys/fs/cgroup/cpu ro,nosuid,nodev,noexec,relatime master:18 - cgroup cpu rw,cpu
493 490 0:31 /docker/bf7809b99cdc4e35f51463dbc091bacc2b54bb6bbeddce56c3566b3d3553552d /sys/fs/cgroup/cpuacct ro,nosuid,nodev,noexec,relatime master:19 - cgroup cpuacct rw,cpuacct
494 490 0:32 /docker/bf7809b99cdc4e35f51463dbc091bacc2b54bb6bbeddce56c3566b3d3553552d /sys/fs/cgroup/blkio ro,nosuid,nodev,noexec,relatime master:20 - cgroup blkio rw,blkio
495 490 0:33 /docker/bf7809b99cdc4e35f51463dbc091bacc2b54bb6bbeddce56c3566b3d3553552d /sys/fs/cgroup/memory ro,nosuid,nodev,noexec,relatime master:21 - cgroup memory rw,memory
496 490 0:34 /docker/bf7809b99cdc4e35f51463dbc091bacc2b54bb6bbeddce56c3566b3d3553552d /sys/fs/cgroup/devices ro,nosuid,nodev,noexec,relatime master:22 - cgroup devices rw,devices
497 490 0:35 /docker/bf7809b99cdc4e35f51463dbc091bacc2b54bb6bbeddce56c3566b3d3553552d /sys/fs/cgroup/freezer ro,nosuid,nodev,noexec,relatime master:23 - cgroup freezer rw,freezer
498 490 0:36 /docker/bf7809b99cdc4e35f51463dbc091bacc2b54bb6bbeddce56c3566b3d3553552d /sys/fs/cgroup/net_cls ro,nosuid,nodev,noexec,relatime master:24 - cgroup net_cls rw,net_cls
499 490 0:37 /docker/bf7809b99cdc4e35f51463dbc091bacc2b54bb6bbeddce56c3566b3d3553552d /sys/fs/cgroup/perf_event ro,nosuid,nodev,noexec,relatime master:25 - cgroup perf_event rw,perf_event
500 490 0:38 /docker/bf7809b99cdc4e35f51463dbc091bacc2b54bb6bbeddce56c3566b3d3553552d /sys/fs/cgroup/net_prio ro,nosuid,nodev,noexec,relatime master:26 - cgroup net_prio rw,net_prio
501 490 0:39 /docker/bf7809b99cdc4e35f51463dbc091bacc2b54bb6bbeddce56c3566b3d3553552d /sys/fs/cgroup/hugetlb ro,nosuid,nodev,noexec,relatime master:27 - cgroup hugetlb rw,hugetlb
502 490 0:40 /docker/bf7809b99cdc4e35f51463dbc091bacc2b54bb6bbeddce56c3566b3d3553552d /sys/fs/cgroup/pids ro,nosuid,nodev,noexec,relatime master:28 - cgroup pids rw,pids
503 490 0:41 / /sys/fs/cgroup/rdma ro,nosuid,nodev,noexec,relatime master:29 - cgroup rdma rw,rdma
504 490 0:42 /docker/bf7809b99cdc4e35f51463dbc091bacc2b54bb6bbeddce56c3566b3d3553552d /sys/fs/cgroup/systemd ro,nosuid,nodev,noexec,relatime master:30 - cgroup cgroup rw,name=systemd
505 487 0:110 / /dev/mqueue rw,nosuid,nodev,noexec,relatime - mqueue mqueue rw
506 487 0:116 / /dev/shm rw,nosuid,nodev,noexec,relatime - tmpfs shm rw,size=65536k
507 441 254:1 /docker/containers/bf7809b99cdc4e35f51463dbc091bacc2b54bb6bbeddce56c3566b3d3553552d/resolv.conf /etc/resolv.conf rw,relatime - ext4 /dev/vda1 rw
508 441 254:1 /docker/containers/bf7809b99cdc4e35f51463dbc091bacc2b54bb6bbeddce56c3566b3d3553552d/hostname /etc/hostname rw,relatime - ext4 /dev/vda1 rw
509 441 254:1 /docker/containers/bf7809b99cdc4e35f51463dbc091bacc2b54bb6bbeddce56c3566b3d3553552d/hosts /etc/hosts rw,relatime - ext4 /dev/vda1 rw
325 486 0:111 /bus /proc/bus ro,relatime - proc proc rw
326 486 0:111 /fs /proc/fs ro,relatime - proc proc rw
327 486 0:111 /irq /proc/irq ro,relatime - proc proc rw
328 486 0:111 /sys /proc/sys ro,relatime - proc proc rw
329 486 0:111 /sysrq-trigger /proc/sysrq-trigger ro,relatime - proc proc rw
330 486 0:117 / /proc/acpi ro,relatime - tmpfs tmpfs ro
331 486 0:112 /null /proc/kcore rw,nosuid - tmpfs tmpfs rw,size=65536k,mode=755
332 486 0:112 /null /proc/keys rw,nosuid - tmpfs tmpfs rw,size=65536k,mode=755
333 486 0:112 /null /proc/timer_list rw,nosuid - tmpfs tmpfs rw,size=65536k,mode=755
334 486 0:112 /null /proc/sched_debug rw,nosuid - tmpfs tmpfs rw,size=65536k,mode=755
335 489 0:118 / /sys/firmware ro,relatime - tmpfs tmpfs ro
mounts
プロセスのマウント名前空間に現在マウントされているすべてのファイルシステムの一覧
https://man7.org/linux/man-pages/man7/mount_namespaces.7.html
https://man7.org/linux/man-pages/man5/fstab.5.html
/proc/1 # cat mounts
overlay / overlay rw,relatime,lowerdir=/var/lib/docker/overlay2/l/BDY7PMJU4CCICFFJZWBOXOJGBA:/var/lib/docker/overlay2/l/HVQZRB6QCR34A4LTMUYK7WUQIG:/var/lib/docker/overlay2/l/3E7SUGFIJZW4UVSM47THOR56GH:/var/lib/docker/overlay2/l/P354VKRAJXJOIEL4ENNME7AUB7:/var/lib/docker/overlay2/l/DLC43UAJ4KLVGILIWQ6GOIOJHA:/var/lib/docker/overlay2/l/6PG626FG6T6TEG5N4PTYOWTQWK:/var/lib/docker/overlay2/l/ORG2QBNC67IG6FMZVVFI2MJI3D,upperdir=/var/lib/docker/overlay2/1aa0c289cd2c7724c005b570f28f07c6a9b803855d3867e1fc97aa53ea7ba0e3/diff,workdir=/var/lib/docker/overlay2/1aa0c289cd2c7724c005b570f28f07c6a9b803855d3867e1fc97aa53ea7ba0e3/work 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /dev tmpfs rw,nosuid,size=65536k,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666 0 0
sysfs /sys sysfs ro,nosuid,nodev,noexec,relatime 0 0
tmpfs /sys/fs/cgroup tmpfs rw,nosuid,nodev,noexec,relatime,mode=755 0 0
cpuset /sys/fs/cgroup/cpuset cgroup ro,nosuid,nodev,noexec,relatime,cpuset 0 0
cpu /sys/fs/cgroup/cpu cgroup ro,nosuid,nodev,noexec,relatime,cpu 0 0
cpuacct /sys/fs/cgroup/cpuacct cgroup ro,nosuid,nodev,noexec,relatime,cpuacct 0 0
blkio /sys/fs/cgroup/blkio cgroup ro,nosuid,nodev,noexec,relatime,blkio 0 0
memory /sys/fs/cgroup/memory cgroup ro,nosuid,nodev,noexec,relatime,memory 0 0
devices /sys/fs/cgroup/devices cgroup ro,nosuid,nodev,noexec,relatime,devices 0 0
freezer /sys/fs/cgroup/freezer cgroup ro,nosuid,nodev,noexec,relatime,freezer 0 0
net_cls /sys/fs/cgroup/net_cls cgroup ro,nosuid,nodev,noexec,relatime,net_cls 0 0
perf_event /sys/fs/cgroup/perf_event cgroup ro,nosuid,nodev,noexec,relatime,perf_event 0 0
net_prio /sys/fs/cgroup/net_prio cgroup ro,nosuid,nodev,noexec,relatime,net_prio 0 0
hugetlb /sys/fs/cgroup/hugetlb cgroup ro,nosuid,nodev,noexec,relatime,hugetlb 0 0
pids /sys/fs/cgroup/pids cgroup ro,nosuid,nodev,noexec,relatime,pids 0 0
rdma /sys/fs/cgroup/rdma cgroup ro,nosuid,nodev,noexec,relatime,rdma 0 0
cgroup /sys/fs/cgroup/systemd cgroup ro,nosuid,nodev,noexec,relatime,name=systemd 0 0
mqueue /dev/mqueue mqueue rw,nosuid,nodev,noexec,relatime 0 0
shm /dev/shm tmpfs rw,nosuid,nodev,noexec,relatime,size=65536k 0 0
/dev/vda1 /etc/resolv.conf ext4 rw,relatime 0 0
/dev/vda1 /etc/hostname ext4 rw,relatime 0 0
/dev/vda1 /etc/hosts ext4 rw,relatime 0 0
proc /proc/bus proc ro,relatime 0 0
proc /proc/fs proc ro,relatime 0 0
proc /proc/irq proc ro,relatime 0 0
proc /proc/sys proc ro,relatime 0 0
proc /proc/sysrq-trigger proc ro,relatime 0 0
tmpfs /proc/acpi tmpfs ro,relatime 0 0
tmpfs /proc/kcore tmpfs rw,nosuid,size=65536k,mode=755 0 0
tmpfs /proc/keys tmpfs rw,nosuid,size=65536k,mode=755 0 0
tmpfs /proc/timer_list tmpfs rw,nosuid,size=65536k,mode=755 0 0
tmpfs /proc/sched_debug tmpfs rw,nosuid,size=65536k,mode=755 0 0
tmpfs /sys/firmware tmpfs ro,relatime 0 0
mountstats
プロセスのマウント名前空間のマウントポイントに関する情報(統計、構成情報)
左から順に
マウントされたデバイス(対応するデバイスがなければnodevice)
ファイルシステムツリー内のマウントポイント
ファイルシステムのタイプ
オプションの統計や構成情報
/proc/1 # cat mountstats
device overlay mounted on / with fstype overlay
device proc mounted on /proc with fstype proc
device tmpfs mounted on /dev with fstype tmpfs
device devpts mounted on /dev/pts with fstype devpts
device sysfs mounted on /sys with fstype sysfs
device tmpfs mounted on /sys/fs/cgroup with fstype tmpfs
device cpuset mounted on /sys/fs/cgroup/cpuset with fstype cgroup
device cpu mounted on /sys/fs/cgroup/cpu with fstype cgroup
device cpuacct mounted on /sys/fs/cgroup/cpuacct with fstype cgroup
device blkio mounted on /sys/fs/cgroup/blkio with fstype cgroup
device memory mounted on /sys/fs/cgroup/memory with fstype cgroup
device devices mounted on /sys/fs/cgroup/devices with fstype cgroup
device freezer mounted on /sys/fs/cgroup/freezer with fstype cgroup
device net_cls mounted on /sys/fs/cgroup/net_cls with fstype cgroup
device perf_event mounted on /sys/fs/cgroup/perf_event with fstype cgroup
device net_prio mounted on /sys/fs/cgroup/net_prio with fstype cgroup
device hugetlb mounted on /sys/fs/cgroup/hugetlb with fstype cgroup
device pids mounted on /sys/fs/cgroup/pids with fstype cgroup
device rdma mounted on /sys/fs/cgroup/rdma with fstype cgroup
device cgroup mounted on /sys/fs/cgroup/systemd with fstype cgroup
device mqueue mounted on /dev/mqueue with fstype mqueue
device shm mounted on /dev/shm with fstype tmpfs
device /dev/vda1 mounted on /etc/resolv.conf with fstype ext4
device /dev/vda1 mounted on /etc/hostname with fstype ext4
device /dev/vda1 mounted on /etc/hosts with fstype ext4
device proc mounted on /proc/bus with fstype proc
device proc mounted on /proc/fs with fstype proc
device proc mounted on /proc/irq with fstype proc
device proc mounted on /proc/sys with fstype proc
device proc mounted on /proc/sysrq-trigger with fstype proc
device tmpfs mounted on /proc/acpi with fstype tmpfs
device tmpfs mounted on /proc/kcore with fstype tmpfs
device tmpfs mounted on /proc/keys with fstype tmpfs
device tmpfs mounted on /proc/timer_list with fstype tmpfs
device tmpfs mounted on /proc/sched_debug with fstype tmpfs
device tmpfs mounted on /sys/firmware with fstype tmpfs
net
めちゃくちゃ多いので割愛
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/deployment_guide/s2-proc-dir-net
ns
名前空間
https://man7.org/linux/man-pages/man2/setns.2.html
https://man7.org/linux/man-pages/man7/namespaces.7.html
/proc/1/ns # ls -l
total 0
lrwxrwxrwx 1 root root 0 Feb 21 17:20 cgroup -> cgroup:[4026531835]
lrwxrwxrwx 1 root root 0 Feb 21 17:20 ipc -> ipc:[4026532282]
lrwxrwxrwx 1 root root 0 Feb 21 17:20 mnt -> mnt:[4026532280]
lrwxrwxrwx 1 root root 0 Feb 21 17:20 net -> net:[4026532285]
lrwxrwxrwx 1 root root 0 Feb 21 17:20 pid -> pid:[4026532283]
lrwxrwxrwx 1 root root 0 Feb 21 17:20 pid_for_children -> pid:[4026532283]
lrwxrwxrwx 1 root root 0 Feb 21 17:20 user -> user:[4026531837]
lrwxrwxrwx 1 root root 0 Feb 21 17:20 uts -> uts:[4026532281]
oom_adj
OOMに使用されるスコアを調整できる
指定できる範囲は-16 ~ +15で-17はOOMキルを完全に無効にする
デフォルトは0
更新時はCAP_SYS_RESOURCEが必要
2.6.36以降は /proc/<pid>/oom_socre_adj
が優先される(deprecated)
/proc/1 # cat oom_adj
0
oom_score
現在のOOMスコアが表示される
スコアが高いほどプロセスがOOM-killerに殺される可能性が高まる
スコアの基準はメモリの使用量だが、減少・増加は次のような要因で行われる
プロセスに特権(privileged)があるかどうか?(減少)
2.6.36以前だと以下も
プロセスがforkを使用して多くの子プロセスを作成するかどうか(増加)
プロセスが長時間実行されているか or CPU時間を大量に使用しているか(減少)
プロセスのnice値が低いかどうか(>0の場合増加)
プロセスがハードウェアに直接アクセスするかどうか(減少)
また、oom_scoreはプロセスのoom_score_adj or oom_adjで指定された値も反映する
/proc/1 # cat oom_score
0
oom_score_adj
基本はoom_adjと似たようなもの
ただ値のrangeが -1000(タスクの許可されたメモリの指定した割合をタスクに対するスコアリングとみなされないようにすることとほぼ同等) ~ 0(強制終了しない) ~ 1000(常に強制終了)
プロセスに割り当て可能なメモリに対しての比率(半分使ってたら500になる)
oom_adj or oom_score_adj をいじるともう片方が変更される
/proc/1 # cat oom_score_adj
0
pagemap
ページテーブル
https://www.kernel.org/doc/Documentation/admin-guide/mm/pagemap.rst
root
このプロセスのルートディレクトリへのリンク
/proc/1 # ls -l | grep "root ->"
lrwxrwxrwx 1 root root 0 Feb 20 12:06 root -> /
smaps
mapsの拡張
マッピング毎のメモリ消費量とそれに関連するフラグを表示する
/proc/1 # cat smaps
56272c442000-56272c444000 r--p 00000000 fe:01 3021452 /sbin/tini
Size: 8 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Rss: 8 kB
Pss: 8 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 8 kB
Private_Dirty: 0 kB
Referenced: 8 kB
Anonymous: 0 kB
LazyFree: 0 kB
AnonHugePages: 0 kB
ShmemPmdMapped: 0 kB
Shared_Hugetlb: 0 kB
Private_Hugetlb: 0 kB
Swap: 0 kB
SwapPss: 0 kB
Locked: 0 kB
THPeligible: 0
VmFlags: rd mr mw me dw
56272c444000-56272c446000 r-xp 00002000 fe:01 3021452 /sbin/tini
Size: 8 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Rss: 8 kB
Pss: 8 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 8 kB
Private_Dirty: 0 kB
Referenced: 8 kB
Anonymous: 0 kB
LazyFree: 0 kB
AnonHugePages: 0 kB
ShmemPmdMapped: 0 kB
Shared_Hugetlb: 0 kB
Private_Hugetlb: 0 kB
Swap: 0 kB
SwapPss: 0 kB
Locked: 0 kB
THPeligible: 0
VmFlags: rd ex mr mw me dw
56272c446000-56272c448000 r--p 00004000 fe:01 3021452 /sbin/tini
Size: 8 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Rss: 8 kB
Pss: 8 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 8 kB
Private_Dirty: 0 kB
Referenced: 8 kB
Anonymous: 0 kB
LazyFree: 0 kB
AnonHugePages: 0 kB
ShmemPmdMapped: 0 kB
Shared_Hugetlb: 0 kB
Private_Hugetlb: 0 kB
Swap: 0 kB
SwapPss: 0 kB
Locked: 0 kB
THPeligible: 0
VmFlags: rd mr mw me dw
56272c448000-56272c449000 r--p 00005000 fe:01 3021452 /sbin/tini
Size: 4 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Rss: 4 kB
Pss: 4 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 4 kB
Referenced: 4 kB
Anonymous: 4 kB
LazyFree: 0 kB
AnonHugePages: 0 kB
ShmemPmdMapped: 0 kB
Shared_Hugetlb: 0 kB
Private_Hugetlb: 0 kB
Swap: 0 kB
SwapPss: 0 kB
Locked: 0 kB
THPeligible: 0
VmFlags: rd mr mw me dw ac
56272c449000-56272c44a000 rw-p 00006000 fe:01 3021452 /sbin/tini
Size: 4 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Rss: 4 kB
Pss: 4 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 4 kB
Referenced: 4 kB
Anonymous: 4 kB
LazyFree: 0 kB
AnonHugePages: 0 kB
ShmemPmdMapped: 0 kB
Shared_Hugetlb: 0 kB
Private_Hugetlb: 0 kB
Swap: 0 kB
SwapPss: 0 kB
Locked: 0 kB
THPeligible: 0
VmFlags: rd wr mr mw me dw ac
7f84b6128000-7f84b613d000 r--p 00000000 fe:01 1979988 /lib/ld-musl-x86_64.so.1
Size: 84 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Rss: 80 kB
Pss: 20 kB
Shared_Clean: 80 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 0 kB
Referenced: 80 kB
Anonymous: 0 kB
LazyFree: 0 kB
AnonHugePages: 0 kB
ShmemPmdMapped: 0 kB
Shared_Hugetlb: 0 kB
Private_Hugetlb: 0 kB
Swap: 0 kB
SwapPss: 0 kB
Locked: 0 kB
THPeligible: 0
VmFlags: rd mr mw me dw
7f84b613d000-7f84b6184000 r-xp 00015000 fe:01 1979988 /lib/ld-musl-x86_64.so.1
Size: 284 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Rss: 280 kB
Pss: 77 kB
Shared_Clean: 280 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 0 kB
Referenced: 280 kB
Anonymous: 0 kB
LazyFree: 0 kB
AnonHugePages: 0 kB
ShmemPmdMapped: 0 kB
Shared_Hugetlb: 0 kB
Private_Hugetlb: 0 kB
Swap: 0 kB
SwapPss: 0 kB
Locked: 0 kB
THPeligible: 0
VmFlags: rd ex mr mw me dw
7f84b6184000-7f84b61b8000 r--p 0005c000 fe:01 1979988 /lib/ld-musl-x86_64.so.1
Size: 208 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Rss: 60 kB
Pss: 16 kB
Shared_Clean: 60 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 0 kB
Referenced: 60 kB
Anonymous: 0 kB
LazyFree: 0 kB
AnonHugePages: 0 kB
ShmemPmdMapped: 0 kB
Shared_Hugetlb: 0 kB
Private_Hugetlb: 0 kB
Swap: 0 kB
SwapPss: 0 kB
Locked: 0 kB
THPeligible: 0
VmFlags: rd mr mw me dw
7f84b61b9000-7f84b61ba000 r--p 00090000 fe:01 1979988 /lib/ld-musl-x86_64.so.1
Size: 4 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Rss: 4 kB
Pss: 4 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 4 kB
Referenced: 4 kB
Anonymous: 4 kB
LazyFree: 0 kB
AnonHugePages: 0 kB
ShmemPmdMapped: 0 kB
Shared_Hugetlb: 0 kB
Private_Hugetlb: 0 kB
Swap: 0 kB
SwapPss: 0 kB
Locked: 0 kB
THPeligible: 0
VmFlags: rd mr mw me dw ac
7f84b61ba000-7f84b61bb000 rw-p 00091000 fe:01 1979988 /lib/ld-musl-x86_64.so.1
Size: 4 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Rss: 4 kB
Pss: 4 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 4 kB
Referenced: 4 kB
Anonymous: 4 kB
LazyFree: 0 kB
AnonHugePages: 0 kB
ShmemPmdMapped: 0 kB
Shared_Hugetlb: 0 kB
Private_Hugetlb: 0 kB
Swap: 0 kB
SwapPss: 0 kB
Locked: 0 kB
THPeligible: 0
VmFlags: rd wr mr mw me dw ac
7f84b61bb000-7f84b61be000 rw-p 00000000 00:00 0
Size: 12 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Rss: 8 kB
Pss: 8 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 8 kB
Referenced: 8 kB
Anonymous: 8 kB
LazyFree: 0 kB
AnonHugePages: 0 kB
ShmemPmdMapped: 0 kB
Shared_Hugetlb: 0 kB
Private_Hugetlb: 0 kB
Swap: 0 kB
SwapPss: 0 kB
Locked: 0 kB
THPeligible: 0
VmFlags: rd wr mr mw me ac
7fffaae31000-7fffaae52000 rw-p 00000000 00:00 0 [stack]
Size: 132 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Rss: 4 kB
Pss: 4 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 4 kB
Referenced: 4 kB
Anonymous: 4 kB
LazyFree: 0 kB
AnonHugePages: 0 kB
ShmemPmdMapped: 0 kB
Shared_Hugetlb: 0 kB
Private_Hugetlb: 0 kB
Swap: 0 kB
SwapPss: 0 kB
Locked: 0 kB
THPeligible: 0
VmFlags: rd wr mr mw me gd ac
7fffaaee5000-7fffaaee8000 r--p 00000000 00:00 0 [vvar]
Size: 12 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Rss: 0 kB
Pss: 0 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 0 kB
Referenced: 0 kB
Anonymous: 0 kB
LazyFree: 0 kB
AnonHugePages: 0 kB
ShmemPmdMapped: 0 kB
Shared_Hugetlb: 0 kB
Private_Hugetlb: 0 kB
Swap: 0 kB
SwapPss: 0 kB
Locked: 0 kB
THPeligible: 0
VmFlags: rd mr pf io de dd
7fffaaee8000-7fffaaeea000 r-xp 00000000 00:00 0 [vdso]
Size: 8 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Rss: 4 kB
Pss: 0 kB
Shared_Clean: 4 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 0 kB
Referenced: 4 kB
Anonymous: 0 kB
LazyFree: 0 kB
AnonHugePages: 0 kB
ShmemPmdMapped: 0 kB
Shared_Hugetlb: 0 kB
Private_Hugetlb: 0 kB
Swap: 0 kB
SwapPss: 0 kB
Locked: 0 kB
THPeligible: 0
VmFlags: rd ex mr mw me de
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
Size: 4 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Rss: 0 kB
Pss: 0 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 0 kB
Referenced: 0 kB
Anonymous: 0 kB
LazyFree: 0 kB
AnonHugePages: 0 kB
ShmemPmdMapped: 0 kB
Shared_Hugetlb: 0 kB
Private_Hugetlb: 0 kB
Swap: 0 kB
SwapPss: 0 kB
Locked: 0 kB
THPeligible: 0
VmFlags: rd ex
smaps_rollup
プロセスの全てのマッピングの累積のsmaps統計
smapsから導出できるが、より高速で便利
/proc/1 # cat smaps_rollup
56272c442000-7fffaaeea000 ---p 00000000 00:00 0 [rollup]
Rss: 476 kB
Pss: 166 kB
Shared_Clean: 424 kB
Shared_Dirty: 0 kB
Private_Clean: 24 kB
Private_Dirty: 28 kB
Referenced: 476 kB
Anonymous: 28 kB
LazyFree: 0 kB
AnonHugePages: 0 kB
ShmemPmdMapped: 0 kB
Shared_Hugetlb: 0 kB
Private_Hugetlb: 0 kB
Swap: 0 kB
SwapPss: 0 kB
Locked: 0 kB
stack
スタックトレースを表示する
CONFIG_STACKTRACEで有効
stat
プロセスのステータス
/proc/1 # cat stat
1 (tini) S 0 1 1 0 -1 1077952768 837 0 1 0 6 8 0 0 20 0 1 0 5608068 798720 1 18446744073709551615 94726246375424 94726246390548 140736060529872 0 0 0 0 3145728 0 0 0 0 17 0 0 0 0 0 0 94726246402880 94726246405259 94726276997120 140736060530492 140736060530530 140736060530530 140736060530669 0
statm
プロセスのメモリステータス
/proc/1 # cat statm
195 1 0 4 0 38 0
status
人間が読める形式のプロセスステータス
/proc/1 # cat status
Name: tini
Umask: 0022
State: S (sleeping)
Tgid: 1
Ngid: 0
Pid: 1
PPid: 0
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 64
Groups: 0 1 2 3 4 6 10 11 20 26 27
NStgid: 1
NSpid: 1
NSpgid: 1
NSsid: 1
VmPeak: 780 kB
VmSize: 780 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 4 kB
VmRSS: 4 kB
RssAnon: 4 kB
RssFile: 0 kB
RssShmem: 0 kB
VmData: 20 kB
VmStk: 132 kB
VmExe: 16 kB
VmLib: 284 kB
VmPTE: 32 kB
VmSwap: 0 kB
HugetlbPages: 0 kB
CoreDumping: 0
Threads: 1
SigQ: 1/7418
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000300000
SigCgt: 0000000000000000
CapInh: 00000000a80c25fb
CapPrm: 00000000a80c25fb
CapEff: 00000000a80c25fb
CapBnd: 00000000a80c25fb
CapAmb: 0000000000000000
NoNewPrivs: 0
Seccomp: 2
Speculation_Store_Bypass: vulnerable
Cpus_allowed: f
Cpus_allowed_list: 0-3
Mems_allowed: 1
Mems_allowed_list: 0
voluntary_ctxt_switches: 2172
nonvoluntary_ctxt_switches: 54
wchan
CONFIG_KALLSYMS=yが存在する場合、これはタスクがブロックされているKernel関数のシンボルを示す
ブロックされていない場合は0
/proc/1 # cat wchan
0