1. 程式人生 > >Linux proc filesystem (procfs)

Linux proc filesystem (procfs)

/proc簡介

/proc非常特殊,因為它也是一個虛擬檔案系統。 它有時被稱為程序資訊偽檔案系統。 它不包含“真實”檔案,而是包含執行時系統資訊(例如系統記憶體,安裝的裝置,硬體配置等)。 因此,它可以被視為核心的控制和資訊中心。 實際上,相當多的系統實用程式只是呼叫此目錄中的檔案。 例如,'lsmod'與'cat /proc/modules相同,而'lspci'是'cat /proc/pci'相同。 通過更改位於此目錄中的檔案,您甚至可以在系統執行時讀取/更改核心引數(sysctl)。 關於這個目錄中檔案最獨特的事實是它們都有一個檔案大小為0的事實,除了kcore,mtrr和self。 目錄列表類似於以下內容:

[[email protected] ~]# ll /proc
total 0
dr-xr-xr-x.  9 root    root                  0 Nov 10 16:43 1
dr-xr-xr-x.  9 root    root                  0 Nov 10 16:43 10
dr-xr-xr-x.  9 root    root                  0 Nov 10 16:43 1019
dr-xr-xr-x.  9 root    root                  0 Nov 10 16:43 1021
dr-xr-xr-x. 9 root root 0 Nov 10 16:43 1022 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 107 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 11 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 1176 dr-xr-xr-x. 9 postfix postfix 0 Nov 10
16:45 1182 dr-xr-xr-x. 9 postfix postfix 0 Nov 10 16:45 1184 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 12 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 1283 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 1287 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 13 dr-xr-xr-x. 9 root root 0 Nov 10 16:49 1306 dr-xr-xr-x. 9 root root 0 Nov 10 16:49 1307 dr-xr-xr-x. 9 root root 0 Nov 10 16:49 1308 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 14 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 16 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 17 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 18 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 19 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 2 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 20 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 21 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 22 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 23 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 24 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 26 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 28 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 29 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 291 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 292 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 293 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 299 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 3 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 30 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 300 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 303 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 304 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 305 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 306 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 307 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 31 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 310 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 311 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 32 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 324 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 33 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 331 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 34 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 346 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 35 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 351 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 36 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 37 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 38 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 389 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 390 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 400 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 401 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 415 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 416 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 417 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 418 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 419 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 420 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 421 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 422 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 423 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 424 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 425 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 43 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 44 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 45 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 46 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 494 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 5 dr-xr-xr-x. 9 root root 0 Nov 10 16:45 504 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 515 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 529 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 54 dr-xr-xr-x. 9 root root 0 Nov 10 16:45 549 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 56 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 57 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 58 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 59 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 6 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 60 dr-xr-xr-x. 9 root root 0 Nov 10 16:45 613 dr-xr-xr-x. 9 root root 0 Nov 10 16:45 614 dr-xr-xr-x. 9 root root 0 Nov 10 16:45 615 dr-xr-xr-x. 9 root root 0 Nov 10 16:45 617 dr-xr-xr-x. 9 root root 0 Nov 10 16:45 618 dr-xr-xr-x. 9 root root 0 Nov 10 16:45 619 dr-xr-xr-x. 9 root root 0 Nov 10 16:45 620 dr-xr-xr-x. 9 root root 0 Nov 10 16:45 621 dr-xr-xr-x. 9 root root 0 Nov 10 16:45 622 dr-xr-xr-x. 9 root root 0 Nov 10 16:45 623 dr-xr-xr-x. 9 root root 0 Nov 10 16:45 630 dr-xr-xr-x. 9 root root 0 Nov 10 16:45 631 dr-xr-xr-x. 9 root root 0 Nov 10 16:45 632 dr-xr-xr-x. 9 root root 0 Nov 10 16:45 633 dr-xr-xr-x. 9 root root 0 Nov 10 16:45 634 dr-xr-xr-x. 9 root root 0 Nov 10 16:45 635 dr-xr-xr-x. 9 root root 0 Nov 10 16:45 636 dr-xr-xr-x. 9 root root 0 Nov 10 16:45 637 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 659 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 682 dr-xr-xr-x. 9 dbus dbus 0 Nov 10 16:43 685 dr-xr-xr-x. 9 polkitd polkitd 0 Nov 10 16:43 691 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 692 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 695 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 697 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 7 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 705 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 707 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 73 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 74 dr-xr-xr-x. 9 root root 0 Nov 10 16:45 766 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 8 dr-xr-xr-x. 9 root root 0 Nov 10 16:45 826 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 838 dr-xr-xr-x. 9 root root 0 Nov 10 16:43 9 dr-xr-xr-x. 2 root root 0 Nov 10 16:49 acpi -r--r--r--. 1 root root 0 Nov 10 16:49 buddyinfo dr-xr-xr-x. 4 root root 0 Nov 10 16:49 bus -r--r--r--. 1 root root 0 Nov 10 16:49 cgroups -r--r--r--. 1 root root 0 Nov 10 16:49 cmdline -r--r--r--. 1 root root 0 Nov 10 16:49 consoles -r--r--r--. 1 root root 0 Nov 10 16:49 cpuinfo -r--r--r--. 1 root root 0 Nov 10 16:49 crypto -r--r--r--. 1 root root 0 Nov 10 16:49 devices -r--r--r--. 1 root root 0 Nov 10 16:49 diskstats -r--r--r--. 1 root root 0 Nov 10 16:49 dma dr-xr-xr-x. 2 root root 0 Nov 10 16:49 driver -r--r--r--. 1 root root 0 Nov 10 16:49 execdomains -r--r--r--. 1 root root 0 Nov 10 16:49 fb -r--r--r--. 1 root root 0 Nov 10 16:49 filesystems dr-xr-xr-x. 4 root root 0 Nov 10 16:49 fs -r--r--r--. 1 root root 0 Nov 10 16:49 interrupts -r--r--r--. 1 root root 0 Nov 10 16:49 iomem -r--r--r--. 1 root root 0 Nov 10 16:49 ioports dr-xr-xr-x. 55 root root 0 Nov 10 16:49 irq -r--r--r--. 1 root root 0 Nov 10 16:49 kallsyms -r--------. 1 root root 140737486266368 Nov 10 16:49 kcore -r--r--r--. 1 root root 0 Nov 10 16:49 keys -r--r--r--. 1 root root 0 Nov 10 16:49 key-users -r--------. 1 root root 0 Nov 10 16:49 kmsg -r--------. 1 root root 0 Nov 10 16:49 kpagecount -r--------. 1 root root 0 Nov 10 16:49 kpageflags -r--r--r--. 1 root root 0 Nov 10 16:49 loadavg -r--r--r--. 1 root root 0 Nov 10 16:49 locks -r--r--r--. 1 root root 0 Nov 10 16:49 mdstat -r--r--r--. 1 root root 0 Nov 10 16:49 meminfo -r--r--r--. 1 root root 0 Nov 10 16:49 misc -r--r--r--. 1 root root 0 Nov 10 16:49 modules lrwxrwxrwx. 1 root root 11 Nov 10 16:49 mounts -> self/mounts dr-xr-xr-x. 3 root root 0 Nov 10 16:49 mpt -rw-r--r--. 1 root root 0 Nov 10 16:49 mtrr lrwxrwxrwx. 1 root root 8 Nov 10 16:49 net -> self/net -r--r--r--. 1 root root 0 Nov 10 16:49 pagetypeinfo -r--r--r--. 1 root root 0 Nov 10 16:49 partitions -r--r--r--. 1 root root 0 Nov 10 16:49 sched_debug -r--r--r--. 1 root root 0 Nov 10 16:49 schedstat dr-xr-xr-x. 4 root root 0 Nov 10 16:49 scsi lrwxrwxrwx. 1 root root 0 Nov 10 16:42 self -> 1308 -r--------. 1 root root 0 Nov 10 16:49 slabinfo -r--r--r--. 1 root root 0 Nov 10 16:49 softirqs -r--r--r--. 1 root root 0 Nov 10 16:49 stat -r--r--r--. 1 root root 0 Nov 10 16:43 swaps dr-xr-xr-x. 1 root root 0 Nov 10 16:43 sys --w-------. 1 root root 0 Nov 10 16:49 sysrq-trigger dr-xr-xr-x. 2 root root 0 Nov 10 16:49 sysvipc -r--r--r--. 1 root root 0 Nov 10 16:49 timer_list -rw-r--r--. 1 root root 0 Nov 10 16:49 timer_stats dr-xr-xr-x. 4 root root 0 Nov 10 16:49 tty -r--r--r--. 1 root root 0 Nov 10 16:49 uptime -r--r--r--. 1 root root 0 Nov 10 16:49 version -r--------. 1 root root 0 Nov 10 16:49 vmallocinfo -r--r--r--. 1 root root 0 Nov 10 16:49 vmstat -r--r--r--. 1 root root 0 Nov 10 16:49 zoneinfo
View Code

檢視程序詳細資訊

顯示為數字編號的目錄對應於實際程序ID。檢視程序表,您可以將程序與關聯的程序ID進行匹配。例如,程序表為secure shell server顯示以下內容:

[[email protected] ~]# ps ax | grep sshd
  1021 ?        Ss     0:00 /usr/sbin/sshd -D
  1283 ?        Ss     0:00 sshd: [email protected]/0
  1312 pts/0    S+     0:00 grep --color=auto sshd
View Code

通過檢視程序目錄/proc/1021中的相關檔案,可以獲取此程序的詳細資訊。但是程序目錄裡面很多檔案大小都是0,又怎麼能檢視資訊呢?你可以將這些檔案想象成觀察核心的一扇窗戶,對於那些實際上不包含任何資料的檔案,它只是作為指向實際程序資訊所在位置的指標。 例如,/proc/1021目錄中的檔案列表類似於以下內容:

[[email protected] ~]# ll /proc/1021
total 0
dr-xr-xr-x. 2 root root 0 Nov 10 16:52 attr
-rw-r--r--. 1 root root 0 Nov 10 16:52 autogroup
-r--------. 1 root root 0 Nov 10 16:52 auxv
-r--r--r--. 1 root root 0 Nov 10 16:43 cgroup
--w-------. 1 root root 0 Nov 10 16:52 clear_refs
-r--r--r--. 1 root root 0 Nov 10 16:43 cmdline
-rw-r--r--. 1 root root 0 Nov 10 16:43 comm
-rw-r--r--. 1 root root 0 Nov 10 16:52 coredump_filter
-r--r--r--. 1 root root 0 Nov 10 16:52 cpuset
lrwxrwxrwx. 1 root root 0 Nov 10 16:52 cwd -> /
-r--------. 1 root root 0 Nov 10 16:52 environ
lrwxrwxrwx. 1 root root 0 Nov 10 16:43 exe -> /usr/sbin/sshd
dr-x------. 2 root root 0 Nov 10 16:43 fd
dr-x------. 2 root root 0 Nov 10 16:52 fdinfo
-rw-r--r--. 1 root root 0 Nov 10 16:52 gid_map
-r--------. 1 root root 0 Nov 10 16:52 io
-r--r--r--. 1 root root 0 Nov 10 16:52 limits
-rw-r--r--. 1 root root 0 Nov 10 16:43 loginuid
dr-x------. 2 root root 0 Nov 10 16:52 map_files
-r--r--r--. 1 root root 0 Nov 10 16:52 maps
-rw-------. 1 root root 0 Nov 10 16:52 mem
-r--r--r--. 1 root root 0 Nov 10 16:52 mountinfo
-r--r--r--. 1 root root 0 Nov 10 16:52 mounts
-r--------. 1 root root 0 Nov 10 16:52 mountstats
dr-xr-xr-x. 5 root root 0 Nov 10 16:52 net
dr-x--x--x. 2 root root 0 Nov 10 16:52 ns
-r--r--r--. 1 root root 0 Nov 10 16:52 numa_maps
-rw-r--r--. 1 root root 0 Nov 10 16:52 oom_adj
-r--r--r--. 1 root root 0 Nov 10 16:52 oom_score
-rw-r--r--. 1 root root 0 Nov 10 16:43 oom_score_adj
-r--r--r--. 1 root root 0 Nov 10 16:52 pagemap
-r--------. 1 root root 0 Nov 10 16:52 patch_state
-r--r--r--. 1 root root 0 Nov 10 16:52 personality
-rw-r--r--. 1 root root 0 Nov 10 16:52 projid_map
lrwxrwxrwx. 1 root root 0 Nov 10 16:52 root -> /
-rw-r--r--. 1 root root 0 Nov 10 16:52 sched
-r--r--r--. 1 root root 0 Nov 10 16:52 schedstat
-r--r--r--. 1 root root 0 Nov 10 16:43 sessionid
-rw-r--r--. 1 root root 0 Nov 10 16:52 setgroups
-r--r--r--. 1 root root 0 Nov 10 16:52 smaps
-r--r--r--. 1 root root 0 Nov 10 16:52 stack
-r--r--r--. 1 root root 0 Nov 10 16:43 stat
-r--r--r--. 1 root root 0 Nov 10 16:52 statm
-r--r--r--. 1 root root 0 Nov 10 16:43 status
-r--r--r--. 1 root root 0 Nov 10 16:52 syscall
dr-xr-xr-x. 3 root root 0 Nov 10 16:52 task
-r--r--r--. 1 root root 0 Nov 10 16:52 timers
-rw-r--r--. 1 root root 0 Nov 10 16:52 uid_map
-r--r--r--. 1 root root 0 Nov 10 16:52 wchan
View Code

程序目中部分檔案/目錄解析

/proc/PID/cmdline

Command line arguments.

/proc/PID/cpu

Current and last cpu in which it was executed.

/proc/PID/cwd

Link to the current working directory.

/proc/PID/environ

Values of environment variables.

/proc/PID/exe

Link to the executable of this process.

/proc/PID/fd

Directory, which contains all file descriptors.

/proc/PID/maps

Memory maps to executables and library files.

/proc/PID/mem

Memory held by this process.

/proc/PID/root

Link to the root directory of this process.

/proc/PID/stat

Process status.

/proc/PID/statm

Process memory status information.

/proc/PID/status

Process status in human readable form.