proc/[pid]の中身を全部読んでみる
初めに
自信ないのでコメントご指摘いただけると嬉しいです。
環境
- GCP
- CentOS 7.7
背景
プロセスのことよく知らないので、とりあえずプロセス配下のファイルを全部開いてみれば
少しでもお近づきになれるかと思い、やってみました
環境の確認
GCPで立てたサーバにsshし、rootログインしました。とりあえずCentOSのバージョンの確認。
# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
現在の/procディレクトリの中身(-vは並べ替えオプション)
# ls /proc/ -v
1 20 98 182 835 2198 diskstats kpagecount self
2 21 140 243 852 3082 dma kpageflags slabinfo
4 22 142 276 853 3250 driver loadavg softirqs
6 23 143 282 854 3254 execdomains locks stat
7 24 147 333 949 3389 fb mdstat swaps
8 30 171 376 950 3475 filesystems meminfo sys
9 31 172 378 951 3494 fs misc sysrq-trigger
10 32 173 379 955 acpi interrupts modules sysvipc
11 33 174 384 965 buddyinfo iomem mounts timer_list
13 41 175 398 969 bus ioports mtrr timer_stats
14 42 176 427 970 cgroups irq net tty
15 43 177 431 1160 cmdline kallsyms pagetypeinfo uptime
16 44 178 434 1162 consoles kcore partitions version
17 45 179 435 2128 cpuinfo keys schedstat vmallocinfo
18 47 180 459 2131 crypto key-users sched_debug vmstat
19 60 181 612 2132 devices kmsg scsi zoneinfo
いっぱい並んでいます。
数字のディレクトリはそれぞれ実行中のプロセスの情報が入っているようです。
(例えば、「1」というディレクトリにはPIDが1のプロセスの情報)
それ以外のディレクトリは、プロセス全体で共有する情報とかが入っているんだと思います。
cpuinfoやmeminfoでcpuやメモリの情報が確認できます。
実行中のプロセス一覧も開いてみました
# ps ax
PID TTY STAT TIME COMMAND
1 ? Ss 0:06 /usr/lib/systemd/systemd --switched-root --system --dese
2 ? S 0:00 [kthreadd]
4 ? S< 0:00 [kworker/0:0H]
6 ? S 0:00 [ksoftirqd/0]
7 ? S 0:00 [migration/0]
8 ? S 0:00 [rcu_bh]
9 ? R 0:01 [rcu_sched]
10 ? S< 0:00 [lru-add-drain]
11 ? S 0:01 [watchdog/0]
13 ? S 0:00 [kdevtmpfs]
14 ? S< 0:00 [netns]
15 ? S 0:00 [khungtaskd]
...
若干の差異はありましたが、上記のプロセスIDの数だけプロセスが稼働していました。
確認は以上として、まずは実行プロセスを一つ追加して、そのプロセスの情報を確認してみたいと思います。
なにもしないプロセスを実行
# sleep 365d > /dev/null &
[1] 3792
# sleep 365d > /dev/null &
[1] 3792
バックグラウンドで365日待機するプロセスです。[参考]http://www.usupi.org/sysad/024.html
これって/dev/nullに吐き出す意味があるんでしょうか。
sleep 365d &だけだとどこかにログを吐いてしまう的な?どこでしょうか。
それは置いておいて、3792と返事を返してくれたので、今回はプロセスIDが3792で作成してくれたようです。psコマンドで確認してみます。
# ps aux | grep 3792
root 3792 0.0 0.0 107956 352 pts/0 S 06:28 0:00 sleep 365d
root 3881 0.0 0.1 112712 960 pts/0 S+ 06:37 0:00 grep --color=auto 3792
実行中になっていますね。2つある理由は、現在検索したgrep 3792
コマンドもマッチしているからです。
さて、このプロセスのディレクトリを見てみます。
ls /proc/3792
# ls /proc/3792
attr cwd map_files oom_adj schedstat task
autogroup environ maps oom_score sessionid timers
auxv exe mem oom_score_adj setgroups uid_map
cgroup fd mountinfo pagemap smaps wchan
clear_refs fdinfo mounts patch_state stack
cmdline gid_map mountstats personality stat
comm io net projid_map statm
coredump_filter limits ns root status
cpuset loginuid numa_maps sched syscall
# ls /proc/3792
attr cwd map_files oom_adj schedstat task
autogroup environ maps oom_score sessionid timers
auxv exe mem oom_score_adj setgroups uid_map
cgroup fd mountinfo pagemap smaps wchan
clear_refs fdinfo mounts patch_state stack
cmdline gid_map mountstats personality stat
comm io net projid_map statm
coredump_filter limits ns root status
cpuset loginuid numa_maps sched syscall
量が多く、記事が長くなりそうなため、一列ごとに記事を分けたいと思います。
また、以降の記事では/proc/3792
をカレントディレクトリとします。
#cd /proc/3792
Author And Source
この問題について(proc/[pid]の中身を全部読んでみる), 我々は、より多くの情報をここで見つけました https://qiita.com/ihym/items/b1102466b385eb1c4f61著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .