LPIC /proc/周りについて
そろそろLPICを取りたいなぁなんて考えていて下記の本をやり始めたんですが。。
徹底攻略 LPI問題集 Level1 [Version 3.5]対応 (ITプロ/ITエンジニアのための徹底攻略)
- 作者: 鳥谷部昭寛,菖蒲淳司,ソキウス・ジャパン
- 出版社/メーカー: インプレスジャパン
- 発売日: 2013/01/25
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
知らないことが多すぎる!そんな訳で勉強も兼ねて記録をつけて行きたいと思います。 今回は /proc/についてです。
まず適当なプロセスを選ぶ
$ ps aux
…
kisho 2178 0.0 0.2 23700 1248 pts/0 S+ 01:30 0:00 tmux
…
このtmuxプロセスの情報を見てみることに。
/proc/プロセスID/
以下のファイルがプロセスに関する様々情報を提供してくれます。
cwd
では実行されたディレクトリを見ることができます。
# ls -l /proc/2178/cwd
lrwxrwxrwx. 1 root root 0 May 23 05:11 /proc/2178/cwd -> /home/kisho
# cat /proc/2178/cmdline
tmux
exe
は実行されたプログラム。
# ls -l /proc/2178/exe
lrwxrwxrwx. 1 root root 0 May 23 05:11 /proc/2178/exe -> /usr/bin/tmux
environ
は環境変数。
# cat /proc/2178/environ
HOSTNAME=localhost.localdomainSELINUX_ROLE_REQUESTED=TERM=xterm-256colorSHELL=/bin/bashHISTSIZE=1000SSH_CLIENT=10.0.2.2 50142 22SELINUX_USE_CURRENT_RANGE=SSH_TTY=/dev/pts/0USER=kishoLS_COLORS=rs=0:di=38;5;27:ln=38;5;51:mh=44;38;5;15:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=05;48;5;232;38;5;15:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;34:*.tar=38;5;9:*.tgz=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.Z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lz=38;5;9:*.xz=38;5;9:*.bz2=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.bz=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.rar=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.jpg=38;5;13:*.jpeg=38;5;13:*.gif=38;5;13:*.bmp=38;5;13:*.pbm=38;5;13:*.pgm=38;5;13:*.ppm=38;5;13:*.tga=38;5;13:*.xbm=38;5;13:*.xpm=38;5;13:*.tif=38;5;13:*.tiff=38;5;13:*.png=38;5;13:*.svg=38;5;13:*.svgz=38;5;13:*.mng=38;5;13:*.pcx=38;5;13:*.mov=38;5;13:*.mpg=38;5;13:*.mpeg=38;5;13:*.m2v=38;5;13:*.mkv=38;5;13:*.ogm=38;5;13:*.mp4=38;5;13:*.m4v=38;5;13:*.mp4v=38;5;13:*.vob=38;5;13:*.qt=38;5;13:*.nuv=38;5;13:*.wmv=38;5;13:*.asf=38;5;13:*.rm=38;5;13:*.rmvb=38;5;13:*.flc=38;5;13:*.avi=38;5;13:*.fli=38;5;13:*.flv=38;5;13:*.gl=38;5;13:*.dl=38;5;13:*.xcf=38;5;13:*.xwd=38;5;13:*.yuv=38;5;13:*.cgm=38;5;13:*.emf=38;5;13:*.axv=38;5;13:*.anx=38;5;13:*.ogv=38;5;13:*.ogx=38;5;13:*.aac=38;5;45:*.au=38;5;45:*.flac=38;5;45:*.mid=38;5;45:*.midi=38;5;45:*.mka=38;5;45:*.mp3=38;5;45:*.mpc=38;5;45:*.ogg=38;5;45:*.ra=38;5;45:*.wav=38;5;45:*.axa=38;5;45:*.oga=38;5;45:*.spx=38;5;45:*.xspf=38;5;45:MAIL=/var/spool/mail/kishoPATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/kisho/binPWD=/home/kishoLANG=ja_JP.UTF-8SELINUX_LEVEL_REQUESTED=HISTCONTROL=ignoredupsSHLVL=1HOME=/home/kishoLOGNAME=kishoSSH_CONNECTION=10.0.2.2 50142 10.0.2.15 22LESSOPEN=|/usr/bin/lesspipe.sh %sG_BROKEN_FILENAMES=1_=/usr/bin/tmuxOLDPWD=/home/kisho/dev/study.erlang
fd
は そのプロセスのオープンしているファイルディスクリプタが見えるようになっています。ファイルディスクリプタとはプログラムがアクセスするファイルや標準入出力などをOSが識別するために用いる識別子。fd配下のファイル記述子(番号)に対応するファイルを開くと、そのプロセスがオープンしている記述子と同じものがオープンされます。以下はvimプロセスの例。
# ls -l /proc/4154/fd
total 0
lrwx------. 1 kisho kisho 64 May 23 05:38 0 -> /dev/pts/2
lrwx------. 1 kisho kisho 64 May 23 05:38 1 -> /dev/pts/2
lrwx------. 1 kisho kisho 64 May 23 05:38 2 -> /dev/pts/2
lrwx------. 1 kisho kisho 64 May 23 05:38 4 -> /home/kisho/dev/study.perl/.intermed_c01_001.pl.swp
cpu
っていうのはなかった。
# ls /proc/2178/cpu
ls: cannot access /proc/2178/cpu: No such file or directory
maps
はプロセスのアドレス空間にどのような情報が配置されているかを示します。
# cat /proc/2178/maps
00400000-00457000 r-xp 00000000 fd:00 159995 /usr/bin/tmux
00656000-00659000 rw-p 00056000 fd:00 159995 /usr/bin/tmux
00659000-00672000 rw-p 00000000 00:00 0
00d2e000-00d4f000 rw-p 00000000 00:00 0 [heap]
7fe6bdeb2000-7fe6bdec9000 r-xp 00000000 fd:00 132384 /lib64/libpthread-2.12.so
7fe6bdec9000-7fe6be0c9000 ---p 00017000 fd:00 132384 /lib64/libpthread-2.12.so
7fe6be0c9000-7fe6be0ca000 r--p 00017000 fd:00 132384 /lib64/libpthread-2.12.so
7fe6be0ca000-7fe6be0cb000 rw-p 00018000 fd:00 132384 /lib64/libpthread-2.12.so
7fe6be0cb000-7fe6be0cf000 rw-p 00000000 00:00 0
7fe6be0cf000-7fe6be0e5000 r-xp 00000000 fd:00 132370 /lib64/libnsl-2.12.so
7fe6be0e5000-7fe6be2e4000 ---p 00016000 fd:00 132370 /lib64/libnsl-2.12.so
…
mounts
はマウントしているファイルシステム
# cat /proc/4154/mounts
rootfs / rootfs rw 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,seclabel,relatime 0 0
devtmpfs /dev devtmpfs rw,seclabel,relatime,size=241880k,nr_inodes=60470,mode=755 0 0
devpts /dev/pts devpts rw,seclabel,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /dev/shm tmpfs rw,seclabel,relatime 0 0
/dev/mapper/VolGroup-lv_root / ext4 rw,seclabel,relatime,barrier=1,data=ordered 0 0
none /selinux selinuxfs rw,relatime 0 0
devtmpfs /dev devtmpfs rw,seclabel,relatime,size=241880k,nr_inodes=60470,mode=755 0 0
/proc/bus/usb /proc/bus/usb usbfs rw,relatime 0 0
/dev/sda1 /boot ext4 rw,seclabel,relatime,barrier=1,data=ordered 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 0
mem
は見れなかった。
# cat /proc/2178/mem
cat: /proc/2178/mem: Operation not permitted
status
やstat
はプロセスの状態を表すとても使えるファイル。
# cat /proc/2178/status
Name: tmux
State: S (sleeping)
Tgid: 2178
Pid: 2178
PPid: 1155
TracerPid: 0
Uid: 500 500 500 500
Gid: 500 500 500 500
Utrace: 0
FDSize: 256
Groups: 500
VmPeak: 23704 kB
VmSize: 23700 kB
VmLck: 0 kB
VmHWM: 1248 kB
VmRSS: 1248 kB
VmData: 324 kB
VmStk: 88 kB
VmExe: 348 kB
VmLib: 2368 kB
VmPTE: 68 kB
VmSwap: 0 kB
Threads: 1
SigQ: 0/3779
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000081802
SigCgt: 0000000188034201
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: ffffffffffffffff
Cpus_allowed: 1
Cpus_allowed_list: 0
Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001
Mems_allowed_list: 0
voluntary_ctxt_switches: 11
nonvoluntary_ctxt_switches: 1
statm
はページの使用状況。 先頭から順に、総ページ数、メモリ中に駐在しているページ数、共有されているページ数、自分自身のテキストのページ数、データ/スタックのページ数、ダーティなページ数。
# cat /proc/2178/statm
5925 312 232 87 0 103 0
次に/proc/
直下にあるファイルを見てみます。
以下、システムのブート時のパラメーター。
$ cat /proc/cmdline
ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=jp106 rd_LVM_LV=VolGroup/lv_root rd_NO_DM rhgb quiet
カーネルのバージョン
$ cat /proc/version
Linux version 2.6.32-358.2.1.el6.x86_64 (mockbuild@c6b8.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC) ) #1 SMP Wed Mar 13 00:26:49 UTC 2013
$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 42
model name : Intel(R) Core(TM) i5-2557M CPU @ 1.70GHz
stepping : 7
cpu MHz : 1703.943
cache size : 6144 KB
fpu : yes
fpu_exception : yes
cpuid level : 5
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx rdtscp lm constant_tsc up rep_good pni monitor ssse3 lahf_lm
bogomips : 3407.88
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
システム動作時間
$ cat /proc/uptime
99032.25 95271.36
デバイスとメジャー番号の対応
$ cat /proc/devices |more
Character devices:
1 mem
4 /dev/vc/0
4 tty
4 ttyS
5 /dev/tty
5 /dev/console
5 /dev/ptmx
7 vcs
10 misc
13 input
14 sound
21 sg
29 fb
99 ppdev
116 alsa
128 ptm
136 pts
162 raw
180 usb
189 usb_device
202 cpu/msr
203 cpu/cpuid
249 hidraw
250 usbmon
251 bsg
252 pcmcia
253 watchdog
254 rtc
Block devices:
1 ramdisk
259 blkext
7 loop
8 sd
9 md
11 sr
65 sd
66 sd
67 sd
68 sd
69 sd
70 sd
71 sd
128 sd
129 sd
認識パーティション一覧
$ cat /proc/partitions
major minor #blocks name
8 0 8388608 sda
8 1 512000 sda1
8 2 7875584 sda2
253 0 6856704 dm-0
253 1 1015808 dm-1
扱えるファイルフォーマット一覧
[kisho@localhost ~]$ cat /proc/filesystems
nodev sysfs
nodev rootfs
nodev bdev
nodev proc
nodev cgroup
nodev cpuset
nodev tmpfs
nodev devtmpfs
nodev binfmt_misc
nodev debugfs
nodev securityfs
nodev sockfs
nodev usbfs
nodev pipefs
nodev anon_inodefs
nodev inotifyfs
nodev devpts
nodev ramfs
nodev hugetlbfs
iso9660
nodev pstore
nodev mqueue
nodev selinuxfs
ext4
割り込み要因リスト
$ cat /proc/interrupts
CPU0
0: 194 IO-APIC-edge timer
1: 7 IO-APIC-edge i8042
8: 0 IO-APIC-edge rtc0
9: 0 IO-APIC-fasteoi acpi
12: 106 IO-APIC-edge i8042
14: 0 IO-APIC-edge ata_piix
15: 89 IO-APIC-edge ata_piix
19: 1772221 IO-APIC-fasteoi eth0
21: 67827 IO-APIC-fasteoi ahci, Intel 82801AA-ICH
22: 0 IO-APIC-fasteoi ohci_hcd:usb1
NMI: 0 Non-maskable interrupts
LOC: 3022137 Local timer interrupts
SPU: 0 Spurious interrupts
PMI: 0 Performance monitoring interrupts
IWI: 0 IRQ work interrupts
RES: 0 Rescheduling interrupts
CAL: 0 Function call interrupts
TLB: 0 TLB shootdowns
TRM: 0 Thermal event interrupts
THR: 0 Threshold APIC interrupts
MCE: 0 Machine check exceptions
MCP: 333 Machine check polls
ERR: 0
MIS: 0
スワップファイル一覧
$ cat /proc/swaps
Filename Type Size Used Priority
/dev/dm-1 partition 1015800 20676 -1
ファイルロックリスト
$ cat /proc/locks
1: FLOCK ADVISORY WRITE 1101 fd:00:2896 0 EOF
2: FLOCK ADVISORY WRITE 1101 fd:00:2895 0 EOF
$ cat /proc/loadavg
0.00 0.00 0.00 1/84 5261
システム状態
$ cat /proc/stat
cpu 157397 0 28129 9619778 3609 4889 4489 0 0
cpu0 157397 0 28129 9619778 3609 4889 4489 0 0
intr 4869583 194 7 0 0 0 0 0 0 0 0 0 0 106 0 0 89 0 0 0 1773584 0 67878 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 5616300
btime 1369205840
processes 5262
procs_running 1
procs_blocked 0
softirq 6957109 0 2529094 20019 1746657 62051 0 2 0 8274 2591012
空きメモリ情報
$ cat /proc/meminfo
MemTotal: 502412 kB
MemFree: 374688 kB
Buffers: 14376 kB
Cached: 27828 kB
SwapCached: 4836 kB
Active: 21628 kB
Inactive: 37452 kB
Active(anon): 8336 kB
Inactive(anon): 8540 kB
Active(file): 13292 kB
Inactive(file): 28912 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 1015800 kB
SwapFree: 995124 kB
Dirty: 4 kB
Writeback: 0 kB
AnonPages: 12912 kB
Mapped: 7628 kB
Shmem: 0 kB
Slab: 56612 kB
SReclaimable: 7788 kB
SUnreclaim: 48824 kB
KernelStack: 664 kB
PageTables: 2992 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 1267004 kB
Committed_AS: 90456 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 3924 kB
VmallocChunk: 34359719836 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 8128 kB
DirectMap2M: 516096 kB
スラブキャッシュ状態
$ cat /proc/slabinfo slabinfo - version: 2.1
# name <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail>
nf_conntrack_expect 0 0 240 16 1 : tunables 120 60 0 : slabdata 0 0 0
nf_conntrack_ffffffff81b16540 2 13 304 13 1 : tunables 54 27 0 : slabdata 1 1 0
fib6_nodes 22 59 64 59 1 : tunables 120 60 0 : slabdata 1 1 0
ip6_dst_cache 13 20 384 10 1 : tunables 54 27 0 : slabdata 2 2 0
ndisc_cache 1 15 256 15 1 : tunables 120 60 0 : slabdata 1
dmaチャンネル
$ cat /proc/dma
4: cascade
なんかやったことをそのまま記録しただけになってしまったのでまた詳しく情報を見て行きたいと思います。
今日はここまで~。