转载于:http://blog.chinaunix.net/uid-10449864-id-2956854.html

Linux中/proc目录下文件详解(一)

/proc文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用。可以使用的文件随系统配置的变化而变化。命令procinfo能够显示基于其中某些文件的多种系统信息。以下详细描述/proc下的文件。

/proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过 proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是 动态从系统内核读出所需信息并提交的。
--------------------------------------------------------------------------------


/proc/cmdline文件

这个文件给出了内核启动的命令行。它和用于进程的cmdline项非常相似。

示例:

[root@localhost proc]# cat cmdline

ro root=LABEL=/ rhgb quiet



--------------------------------------------------------------------------------


/proc/cpuinfo文件

这个文件提供了有关系统CPU的多种信息。这些信息是从内核里对CPU的测试代码中得到的。文件列出了CPU的普通型号(386,486,586,686 等),以及能得到的更多特定信息(制造商,型号和版本)。文件还包含了以bogomips表示的处理器速度,而且如果检测到CPU的多种特性或者bug, 文件还会包含相应的标志。这个文件的格式为:文件由多行构成,每行包括一个域名称,一个冒号和一个值。

示例:

[root@localhost proc]# cat cpuinfo

processor : 0

vendor_id : AuthenticAMD

cpu family : 6

model : 8

model name : AMD Athlon(tm) XP 1800+

stepping : 1

cpu MHz : 1530.165

cache size : 256 KB

fdiv_bug : no

hlt_bug : no

f00f_bug : no

coma_bug : no

fpu : yes

fpu_exception : yes

cpuid level : 1

wp : yes

flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 mmx fxsr sse syscall mmxext 3dnowext 3dnow

bogomips : 2998.27



--------------------------------------------------------------------------------


/proc/devices文件

这个文件列出字符和块设备的主设备号,以及分配到这些设备号的设备名称。

示例:

[root@localhost /]# cat /proc/devices

Character devices:

1 mem

4 /dev/vc/0

4 tty

4 ttyS

5 /dev/tty

5 /dev/console

5 /dev/ptmx

6 lp

7 vcs

10 misc

13 input

14 sound

29 fb

36 netlink

116 alsa

128 ptm

136 pts

180 usb




Block devices:

1 ramdisk

2 fd

3 ide0

9 md

22 ide1

253 device-mapper

254 mdp


--------------------------------------------------------------------------------


/proc/dma文件

这个文件列出由驱动程序保留的DMA通道和保留它们的驱动程序名称。casade项供用于把次DMA控制器从主控制器分出的DMA行所使用;这一行不能用于其它用途。

示例:

[root@localhost ~]# cat /proc/dma

4: cascade



--------------------------------------------------------------------------------


/proc/filesystems文件

这个文件列出可供使用的文件系统类型,一种类型一行。虽然它们通常是编入内核的文件系统类型,但该文件还可以包含可加载的内核模块加入的其它文件系统类型。

示例:

[root@localhost proc]# cat /proc/filesystems

nodev sysfs

nodev rootfs

nodev bdev

nodev proc

nodev sockfs

nodev binfmt_misc

nodev usbfs

nodev usbdevfs

nodev futexfs

nodev tmpfs

nodev pipefs

nodev eventpollfs

nodev devpts

ext2

nodev ramfs

nodev hugetlbfs

iso9660

nodev mqueue

nodev selinuxfs

ext3

nodev rpc_pipefs

nodev autofs


--------------------------------------------------------------------------------


/proc/interrupts文件

这个文件的每一行都有一个保留的中断。每行中的域有:中断号,本行中断的发生次数,可能带有一个加号的域(SA_INTERRUPT标志设置),以及登记 这个中断的驱动程序的名字。可以在安装新硬件前,像查看/proc/dma和/proc/ioports一样用cat命令手工查看手头的这个文件。这几个 文件列出了当前投入使用的资源(但是不包括那些没有加载驱动程序的硬件所使用的资源)。

示例:

[root@localhost SPECS]# cat /proc/interrupts

CPU0

0: 7039406 XT-PIC timer

1: 6533 XT-PIC i8042

2: 0 XT-PIC cascade

3: 0 XT-PIC uhci_hcd

5: 108 XT-PIC VIA8233, uhci_hcd

8: 1 XT-PIC rtc

9: 0 XT-PIC acpi

10: 0 XT-PIC ehci_hcd

11: 17412 XT-PIC uhci_hcd, eth0

12: 140314 XT-PIC i8042

14: 37897 XT-PIC ide0

15: 60813 XT-PIC ide1

NMI: 0

ERR: 1


--------------------------------------------------------------------------------


/proc/ioports文件

这个文件列出了诸如磁盘驱动器,以太网卡和声卡设备等多种设备驱动程序登记的许多I/O端口范围。

示例:

[root@localhost SPECS]# cat /proc/ioports

0000-001f : dma1

0020-0021 : pic1

0040-0043 : timer0

0050-0053 : timer1

0060-006f : keyboard

0070-0077 : rtc

0080-008f : dma page reg

00a0-00a1 : pic2

00c0-00df : dma2

00f0-00ff : fpu

0170-0177 : ide1

01f0-01f7 : ide0

0376-0376 : ide1

0378-037a : parport0

037b-037f : parport0

03c0-03df : vga+

03f6-03f6 : ide0

03f8-03ff : serial

0800-0803 : PM1a_EVT_BLK

0804-0805 : PM1a_CNT_BLK

0808-080b : PM_TMR

0810-0815 : ACPI CPU throttle

0820-0823 : GPE0_BLK

0cf8-0cff : PCI conf1

dc00-dcff : 0000:00:12.0

dc00-dcff : via-rhine

e000-e0ff : 0000:00:11.5

e000-e0ff : VIA8233

e400-e41f : 0000:00:10.0

e400-e41f : uhci_hcd

e800-e81f : 0000:00:10.1

e800-e81f : uhci_hcd

ec00-ec1f : 0000:00:10.2

ec00-ec1f : uhci_hcd

fc00-fc0f : 0000:00:11.1

fc00-fc07 : ide0

fc08-fc0f : ide1


--------------------------------------------------------------------------------


/proc/kcore文件

这个文件是系统的物理内存以core文件格式保存的文件。例如,GDB能用它考察内核的数据结构。它不是纯文本,而是/proc目录下为数不多的几个二进制格式的项之一。

示例:

暂无


--------------------------------------------------------------------------------


/proc/kmsg文件

这个文件用于检索用printk生成的内核消息。任何时刻只能有一个具有超级用户权限的进程可以读取这个文件。也可以用系统调用syslog检索这些消息。通常使用工具dmesg或守护进程klogd检索这些消息。

示例:

暂无


--------------------------------------------------------------------------------


/proc/ksyms文件

这个文件列出了已经登记的内核符号;这些符号给出了变量或函数的地址。每行给出一个符号的地址,符号名称以及登记这个符号的模块。程序ksyms,insmod和kmod使用这个文件。它还列出了正在运行的任务数,总任务数和最后分配的PID。

示例:

暂无


--------------------------------------------------------------------------------


/proc/loadavg文件

这个文件给出以几个不同的时间间隔计算的系统平均负载,这就如同uptime命令显示的结果那样。前三个数字是平均负载。这是通过计算过去1分钟,5分钟,15分钟里运行队列中的平均任务数得到的。随后是正在运行的任务数和总任务数。最后是上次使用的进程号。

示例:

[root@localhost ~]# cat /proc/loadavg

0.11 0.16 0.14 3/126 3912


--------------------------------------------------------------------------------


/proc/locks文件

这个文件包含在打开的文件上的加锁信息。文件中的每一行描述了特定文件和文档上的加锁信息以及对文件施加的锁的类型。内核也可以需要时对文件施加强制性锁。

示例:

[root@localhost redhat]# cat /proc/locks

1: POSIX ADVISORY READ 3822 03:0a:1067117 0 EOF

2: POSIX ADVISORY READ 3822 03:0a:1067138 0 EOF

3: POSIX ADVISORY WRITE 3326 03:0a:2326540 0 EOF

4: POSIX ADVISORY WRITE 2639 03:0a:2966595 0 EOF

5: FLOCK ADVISORY WRITE 2591 03:0a:2966586 0 EOF

6: POSIX ADVISORY WRITE 2540 03:0a:2966578 0 EOF

7: POSIX ADVISORY WRITE 2530 03:0a:2966579 0 EOF

8: POSIX ADVISORY WRITE 2402 03:0a:2966563 0 EOF

9: POSIX ADVISORY WRITE 2371 03:0a:2966561 0 EOF



Linux中/proc目录下文件详解之(二)

-----------------------------------------------------------------------------------------------------
/proc/mdstat文件

这个文件包含了由md设备驱动程序控制的RAID设备信息。

示例:

[root@localhost ~]# cat /proc/mdstat
Personalities :
unused devices:



--------------------------------------------------------------------------------


/proc/meminfo文件

这个文件给出了内存状态的信息。它显示出系统中空闲内存,已用物理内存和交换内存的总量。它还显示出内核使用的共享内存和缓冲区总量。这些信息的格式和free命令显示的结果类似。

示例:

[root@localhost ~]# cat /proc/meminfo
MemTotal:       223812 kB
MemFree:          3764 kB
Buffers:          9148 kB
Cached:          92112 kB
SwapCached:        364 kB
Active:         183640 kB
Inactive:        17196 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:       223812 kB
LowFree:          3764 kB
SwapTotal:      626524 kB
SwapFree:       620328 kB
Dirty:              12 kB
Writeback:           0 kB
Mapped:         142880 kB
Slab:            12668 kB
Committed_AS:   376732 kB
PageTables:       2336 kB
VmallocTotal:  3907576 kB
VmallocUsed:      2968 kB
VmallocChunk:  3904224 kB
HugePages_Total:     0
HugePages_Free:      0
Hugepagesize:     4096 kB



--------------------------------------------------------------------------------


/proc/misc文件

这个文件报告用内核函数misc_register登记的设备驱动程序。

示例:

[root@localhost ~]# cat /proc/misc
63 device-mapper
175 agpgart
135 rtc


--------------------------------------------------------------------------------


/proc/modules文件

这个文件给出可加载内核模块的信息。lsmod程序用这些信息显示有关模块的名称,大小,使用数目方面的信息。

示例:

[root@localhost /]# cat /proc/modules
md5 4033 1 - Live 0x10a7f000
ipv6 232577 8 - Live 0x10b0c000
parport_pc 24705 1 - Live 0x10a8b000
lp 11565 0 - Live 0x10a7b000
parport 41737 2 parport_pc,lp, Live 0x10a55000
autofs4 24005 0 - Live 0x10a74000
i2c_dev 10433 0 - Live 0x109d2000
i2c_core 22081 1 i2c_dev, Live 0x10a6d000
sunrpc 160421 1 - Live 0x10a9d000
ipt_REJECT 6465 1 - Live 0x109da000
ipt_state 1857 5 - Live 0x109eb000
ip_conntrack 40693 1 ipt_state, Live 0x10a62000
iptable_filter 2753 1 - Live 0x10896000
ip_tables 16193 3 ipt_REJECT,ipt_state,iptable_filter, Live 0x109ed000
dm_mod 54741 0 - Live 0x109f8000
button 6481 0 - Live 0x10905000
battery 8517 0 - Live 0x109d6000
ac 4805 0 - Live 0x10908000
uhci_hcd 31449 0 - Live 0x109dd000
ehci_hcd 31557 0 - Live 0x10949000
snd_via82xx 27237 2 - Live 0x10953000
snd_ac97_codec 64401 1 snd_via82xx, Live 0x10912000
snd_pcm_oss 47609 0 - Live 0x1093c000
snd_mixer_oss 17217 2 snd_pcm_oss, Live 0x1090c000
snd_pcm 97993 2 snd_via82xx,snd_pcm_oss, Live 0x10923000
snd_timer 29765 1 snd_pcm, Live 0x108ec000
snd_page_alloc 9673 2 snd_via82xx,snd_pcm, Live 0x108bd000
gameport 4801 1 snd_via82xx, Live 0x108a6000
snd_mpu401_uart 8769 1 snd_via82xx, Live 0x108b9000
snd_rawmidi 26725 1 snd_mpu401_uart, Live 0x108e4000
snd_seq_device 8137 1 snd_rawmidi, Live 0x1083b000
snd 54053 11 snd_via82xx,snd_ac97_codec,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_timer,snd_mpu401_uart,snd_rawmidi,snd_seq_device, Live 0x108f6000
soundcore 9889 2 snd, Live 0x1089b000
via_rhine 23497 0 - Live 0x1089f000
mii 4673 1 via_rhine, Live 0x10893000
floppy 58609 0 - Live 0x108a9000
ext3 116809 1 - Live 0x10875000
jbd 74969 1 ext3, Live 0x10861000


lsmod命令显示结果如下:

[root@localhost /]# lsmod
Module                  Size  Used by
md5                     4033  1
ipv6                  232577  8
parport_pc             24705  1
lp                     11565  0
parport                41737  2 parport_pc,lp
autofs4                24005  0
i2c_dev                10433  0
i2c_core               22081  1 i2c_dev
sunrpc                160421  1
ipt_REJECT              6465  1
ipt_state               1857  5
ip_conntrack           40693  1 ipt_state
iptable_filter          2753  1
ip_tables              16193  3 ipt_REJECT,ipt_state,iptable_filter
dm_mod                 54741  0
button                  6481  0
battery                 8517  0
ac                      4805  0
uhci_hcd               31449  0
ehci_hcd               31557  0
snd_via82xx            27237  2
snd_ac97_codec         64401  1 snd_via82xx
snd_pcm_oss            47609  0
snd_mixer_oss          17217  2 snd_pcm_oss
snd_pcm                97993  2 snd_via82xx,snd_pcm_oss
snd_timer              29765  1 snd_pcm
snd_page_alloc          9673  2 snd_via82xx,snd_pcm
gameport                4801  1 snd_via82xx
snd_mpu401_uart         8769  1 snd_via82xx
snd_rawmidi            26725  1 snd_mpu401_uart
snd_seq_device          8137  1 snd_rawmidi
snd                    54053  11 snd_via82xx,snd_ac97_codec,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_timer,snd_mpu401_uart,snd_rawmidi,snd_seq_device
soundcore               9889  2 snd
via_rhine              23497  0
mii                     4673  1 via_rhine
floppy                 58609  0
ext3                  116809  1
jbd                    74969  1 ext3


--------------------------------------------------------------------------------


/proc/mounts文件

这个文件以/etc/mtab文件的格式给出当前系统所安装的文件系统信息。这个文件也能反映出任何手工安装从而在/etc/mtab文件中没有包含的文件系统。

示例:

[root@localhost /]# cat /proc/mounts
rootfs / rootfs rw 0 0
/proc /proc proc rw,nodiratime 0 0
none /dev tmpfs rw 0 0
/dev/root / ext3 rw 0 0
none /dev tmpfs rw 0 0
none /selinux selinuxfs rw 0 0
/proc /proc proc rw,nodiratime 0 0
/proc/bus/usb /proc/bus/usb usbfs rw 0 0
/sys /sys sysfs rw 0 0
none /dev/pts devpts rw 0 0
none /dev/shm tmpfs rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0


--------------------------------------------------------------------------------


/proc/pci文件

这个文件给出PCI设备的信息。用它可以方便地诊断PCI问题。你可以从这个文件中检索到的信息包括诸如IDE接口或USB控制器这样的设备,总线,设备和功能编号,设备延迟以及IRQ编号。

示例:

[root@localhost /]# cat /proc/pci
PCI devices found:
  Bus  0, device   0, function  0:
    Class 0600: PCI device 1106:3116 (rev 0).
      Master Capable.  Latency=8.
      Prefetchable 32 bit memory at 0xe0000000 [0xe7ffffff].
  Bus  0, device   1, function  0:
    Class 0604: PCI device 1106:b091 (rev 0).
      Master Capable.  No bursts.  Min Gnt=12.
  Bus  0, device  16, function  2:
    Class 0c03: PCI device 1106:3038 (rev 12.
      IRQ 5.
      Master Capable.  Latency=32.
      I/O at 0xec00 [0xec1f].
  Bus  0, device  16, function  1:
    Class 0c03: PCI device 1106:3038 (rev 12.
      IRQ 3.
      Master Capable.  Latency=32.
      I/O at 0xe800 [0xe81f].
  Bus  0, device  16, function  0:
    Class 0c03: PCI device 1106:3038 (rev 12.
   

  IRQ 11.
      Master Capable.  Latency=32.
      I/O at 0xe400 [0xe41f].
  Bus  0, device  16, function  3:
    Class 0c03: PCI device 1106:3104 (rev 130).
      IRQ 10.
      Master Capable.  Latency=32.
      Non-prefetchable 32 bit memory at 0xdfffff00 [0xdfffffff].
  Bus  0, device  17, function  0:
    Class 0601: PCI device 1106:3177 (rev 0).
  Bus  0, device  17, function  1:
    Class 0101: PCI device 1106:0571 (rev 6).
      IRQ 255.
      Master Capable.  Latency=32.
      I/O at 0xfc00 [0xfc0f].
  Bus  0, device  17, function  5:
    Class 0401: PCI device 1106:3059 (rev 80).
      IRQ 5.
      I/O at 0xe000 [0xe0ff].
  Bus  0, device  18, function  0:
    Class 0200: PCI device 1106:3065 (rev 116).
      IRQ 11.
      Master Capable.  Latency=32.  Min Gnt=3.Max Lat=8.
      I/O at 0xdc00 [0xdcff].
      Non-prefetchable 32 bit memory at 0xdffffe00 [0xdffffeff].
  Bus  1, device   0, function  0:
    Class 0300: PCI device 5333:8d04 (rev 0).
      IRQ 11.
      Master Capable.  Latency=32.  Min Gnt=4.Max Lat=255.
      Non-prefetchable 32 bit memory at 0xdfe80000 [0xdfefffff].
      Prefetchable 32 bit memory at 0xd0000000 [0xd7ffffff].


--------------------------------------------------------------------------------

/proc/stat文件

这个文件包含的信息有CPU利用率,磁盘,内存页,内存对换,全部中断,接触开关以及赏赐自举时间(自1970年1月1日起的秒数)。

示例:

[root@localhost /]# cat /proc/stat
cpu  31994 3898 7161 381600 15254 451 0
cpu0 31994 3898 7161 381600 15254 451 0
intr 4615930 4404290 3364 0 0 12 0 7 0 2 0 0 12618 112114 0 44142 39381
ctxt 1310498
btime 1148891913
processes 4249
procs_running 4
procs_blocked 0


--------------------------------------------------------------------------------


/proc/uptime文件

这个文件给出自从上次系统自举以来的秒数,以及其中有多少秒处于空闲。这主要供uptime程序使用。比较这两个数字能够告诉你长期来看CPU周期浪费的比例。

示例:

[root@localhost /]# cat /proc/uptime
4477.04 4021.10


--------------------------------------------------------------------------------


/proc/version文件

这个文件只有一行内容,说明正在运行的内核版本。可以用标准的编程方法进行分析获得所需的系统信息。

示例:

[root@localhost /]# cat /proc/version
Linux version 2.6.9-1.667 (bhcompile@tweety.build.redhat.com) (gcc version 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)) #1 Tue Nov 2 14:41:25 EST 2004



Linux中/proc目录下文件详解之(三)

--------------------------------------------------------------------------------
/proc/net子目录

此目录下的文件描述或修改了联网代码的行为。可以通过使用arp,netstat,route和ipfwadm命令设置或查询这些特殊文件中的许多文件。

示例:
[root@localhost /]# ls /proc/net
anycast6       ip_conntrack         mcfilter6  rt6_stats     tcp
arp            ip_conntrack_expect  netlink    rt_acct       tcp6
dev            ip_mr_cache          netstat    rt_cache      udp
dev_mcast      ip_mr_vif            packet     snmp          udp6
dev_snmp6      ip_tables_matches    psched     snmp6         unix
if_inet6       ip_tables_names      raw        sockstat      wireless
igmp           ip_tables_targets    raw6       sockstat6
igmp6          ipv6_route           route      softnet_stat
ip6_flowlabel  mcfilter             rpc        stat
--------------------------------------------------------------------------------


以下摘要介绍此目录下文件的功能:

arp
转储每个网络接口的arp表中dev包的统计

dev
来自网络设备的统计

dev_mcast
列出二层(数据链路层)多播组

igmp
加入的IGMP多播组

netlink
netlink套接口的信息

netstat
网络流量的多种统计。第一行是信息头,带有每个变量的名称。接下来的一行保存相应变量的值

raw
原始套接口的套接口表

route
静态路由表

rpc
包含RPC信息的目录

rt_cache
路由缓冲

snmp
snmp agent的ip/icmp/tcp/udp协议统计;各行交替给出字段名和值

sockstat
列出使用的tcp/udp/raw/pac/syc_cookies的数量

tcp
TCP连接的套接口

udp
UDP连接的套接口表

unix
UNIX域套接口的套接口表
--------------------------------------------------------------------------------


示例:[root@localhost /]# cat /proc/net/route
Iface   Destination     Gateway         Flags   RefCnt  Use     Metric  Mask   MTU      Window  IRTT
eth0    0035C2DA        00000000        0001    0       0       0       80FFFFF0
eth0    0000FEA9        00000000        0001    0       0       0       0000FFF0
eth0    00000000        0135C2DA        0003    0       0       0       00000000
--------------------------------------------------------------------------------


[root@localhost /]# cat /proc/net/tcp
  sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode
   0: 00000000:8000 00000000:0000 0A 00000000:00000000 00:00000000 00000000    29        0 9525 1 0dde7500 3000 0 0 2 -1
   1: 00000000:006F 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0        0 9484 1 0dde79e0 3000 0 0 2 -1
   2: 0100007F:0277 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0        0 10049 1 0a8e3a00 3000 0 0 2 -1
   3: 0100007F:14D7 00000000:0000 0A 00000000:00000000 00:00000000 00000000    99        0 9847 1 0dde7020 3000 0 0 2 -1
   4: 0100007F:0019 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0        0 10286 1 0a8e3520 3000 0 0 2 -1
--------------------------------------------------------------------------------
[root@localhost /]# cat /proc/net/arp
IP address       HW type     Flags       HW address            Mask     Device
218.194.53.1     0x1         0x2         00:0D:BC:78:07:3F     *        eth0
--------------------------------------------------------------------------------
[root@localhost /]# cat /proc/net/udp
  sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode
   0: 00000000:8000 00000000:0000 07 00000000:00000000 00:00000000 00000000    29        0 9520 2 0b4ef7c0
105: 00000000:14E9 00000000:0000 07 00000000:00000000 00:00000000 00000000    99        0 10284 2 0b4ef040
111: 00000000:006F 00000000:0000 07 00000000:00000000 00:00000000 00000000 0        0 9483 2 0b4efcc0
116: 00000000:02F4 00000000:0000 07 00000000:00000000 00:00000000 00000000 0        0 9511 2 0b4efa40
119: 00000000:0277 00000000:0000 07 00000000:00000000 00:00000000 00000000 0        0 10050 2 0b4ef2c0

--------------------------------------------------------------------------------


/proc/scsi子目录

此目录下包含一个列出了所有检测到的SCSI设备的文件,并且为每种控制器驱动程序提供一个目录,在这个目录下又为已安装的此种控制器的每个实例提供一个子目录。

示例:
由于本人的机器没有SCSI设备,顾暂时无法提供示例。
--------------------------------------------------------------------------------


/proc/sys子目录

在此目录下有许多子目录。此目录中的许多项都可以用来调整系统的性能。这个目录包含信息太多,无法介绍全部。只在示例中展示目录下的一些文件。

示例:[root@localhost /]# ls /proc/sys
debug  dev  fs  kernel  net  proc  sunrpc  vm
--------------------------------------------------------------------------------
[root@localhost ~]# ls /proc/sys/fs
aio-max-nr   dentry-state       file-nr      lease-break-time  overflowgid
aio-nr       dir-notify-enable  inode-nr     leases-enable     overflowuid
binfmt_misc  file-max           inode-state  mqueue            quota
--------------------------------------------------------------------------------
[root@localhost ~]# ls /proc/sys/kernel
acct                   hotplug      panic                   sem
cad_pid                modprobe     panic_on_oops           shmall
cap-bound              msgmax       pid_max                 shmmax
core_pattern           msgmnb       print-fatal-signals     shmmni
core_uses_pid          msgmni       printk                  sysrq
ctrl-alt-del           ngroups_max  printk_ratelimit        tainted
domainname             osrelease    printk_ratelimit_burst  threads-max
exec-shield            ostype       pty                     vdso
exec-shield-randomize  overflowgid  random                  version
hostname               overflowuid  real-root-dev
--------------------------------------------------------------------------------
[root@localhost ~]# ls /proc/sys/net
core  ethernet  ipv4  ipv6  unix
--------------------------------------------------------------------------------

[root@localhost sys]# ls /proc/sys/vm
block_dump                 laptop_mode            nr_pdflush_threads
dirty_background_ratio     legacy_va_layout       overcommit_memory
dirty_expire_centisecs     lower_zone_protection  overcommit_ratio
dirty_ratio                max_map_count          page-cluster
dirty_writeback_centisecs  min_free_kbytes        swappiness
hugetlb_shm_group          nr_hugepages           vfs_cache_pressure
--------------------------------------------------------------------------------

[root@localhost sys]# ls /proc/sys/net/ipv4
conf                               tcp_fack
icmp_echo_ignore_all               tcp_fin_timeout
icmp_echo_ignore_broadcasts        tcp_frto
icmp_ignore_bogus_error_responses  tcp_keepalive_intvl
icmp_ratelimit                     tcp_keepalive_probes
icmp_ratemask                      tcp_keepalive_time
igmp_max_memberships               tcp_low_latency
igmp_max_msf                       tcp_max_orphans
inet_peer_gc_maxtime               tcp_max_syn_backlog
inet_peer_gc_mintime               tcp_max_tw_buckets
inet_peer_maxttl                   tcp_mem
inet_peer_minttl                   tcp_moderate_rcvbuf
inet_peer_threshold                tcp_no_metrics_save
ip_autoconfig                      tcp_orphan_retries
ip_conntrack_max                   tcp_reordering
ip_default_ttl                     tcp_retrans_collapse
ip_dynaddr                         tcp_retries1
ip_forward                         tcp_retries2
ipfrag_high_thresh                 tcp_rfc1337
ipfrag_low_thresh                  tcp_rmem
ipfrag_secret_interval             tcp_sack
ipfrag_time                        tcp_stdurg
ip_local_port_range                tcp_synack_retries
ip_nonlocal_bind                   tcp_syncookies
ip_no_pmtu_disc                    tcp_syn_retries
neigh                              tcp_timestamps
netfilter                          tcp_tso_win_divisor
route                              tcp_tw_recycle
tcp_abort_on_overflow              tcp_tw_reuse
tcp_adv_win_scale                  tcp_vegas_alpha
tcp_app_win                        tcp_vegas_beta
tcp_bic                            tcp_vegas_cong_avoid
tcp_bic_fast_convergence           tcp_vegas_gamma
tcp_bic_low_window                 tcp_westwood
tcp_dsack                          tcp_window_scaling
tcp_ecn                            tcp_wmem
--------------------------------------------------------------------------------

[root@localhost sys]# cat /proc/sys/kernel/shmall
2097152
--------------------------------------------------------------------------------
[root@localhost sys]# cat /proc/sys/kernel/osrelease
2.6.9-1.667

--------------------------------------------------------------------------------


总结:
    /proc文件系统包含了大量的有关当前系统状态的信息。

linux /proc目录下的文件详解

原文地址:http://xlogin.blog.51cto.com/3473583/1216914

 

事情是这样的:一个朋友问为什么/proc目录下的/proc/sys/net/ipv4/conf/lo/arp_ignore只能用echo修改,却无法用vi编辑后进行保存,即使是强制保存都不行...而且该文件的权限也无法修改...

  要搞清楚上边的问题,我们必须要首先知道Linux系统上的/proc目录是干嘛的。

 

   Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即:虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。

 

   基于/proc文件系统如上所述的特殊性,其内的文件也常被称作虚拟文件,并具有一些独特的特点。例如,其中有些文件虽然使用查看命令查看时会返回大量信息,但文件本身的大小却会显示为0字节。此外,这些特殊文件中大多数文件的时间及日期属性通常为当前系统时间和日期,这跟它们随时会被刷新(存储于RAM中)有关。

 

   为了查看及使用上的方便,这些文件通常会按照相关性进行分类存储于不同的目录甚至子目录中,如/proc/scsi目录中存储的就是当前系统上所有SCSI设备的相关信息,/proc/N中存储的则是系统当前正在运行的进程的相关信息,其中N为正在运行的进程(可以想象得到,在某进程结束后其相关目录则会消失)。

 

   大多数虚拟文件可以使用文件查看命令如cat、more或者less进行查看,有些文件信息表述的内容可以一目了然,但也有文件的信息却不怎么具有可读性。不过,这些可读性较差的文件在使用一些命令如apm、free、lspci或top查看时却可以有着不错的表现。

 

 

如何使内核设置具有持久性

 

   这里提供了一个方便的实用程序,用于更改 /proc/sys 目录下的任何内核参数。它使您可以更改运行中的内核(类似于echo和重定向方法),但它还有一个在系统引导时执行的配置文件。这使您可以更改运行中的内核,并将这些更改添加到配置文件,以便于在系统重新引导之后,这些更改仍然生效。

   该实用程序称为 sysctl,在 sysctl(8) 的联机帮助页中,对这个实用程序进行了完整的文档说明。

sysctl 的配置文件是 /etc/sysctl.conf,可以编辑该文件,并在 sysctl.conf(8) 下记录了该文件。

   sysctl配置与显示在/proc/sys目录中的内核参数.可以用sysctl来设置或重新设置联网功能,如IP转发、IP碎片去除以及源路由检查等。用户只需要编辑/etc/sysctl.conf文件,即可手工或自动执行由sysctl控制的功能。

   命令格式:

1
2
3
    sysctl [-n] [-e] -w variable=value
    sysctl [-n] [-e] -p <filename> (default  /etc/sysctl .conf)
    sysctl [-n] [-e] -a

 

   常用参数的意义:

   -w   临时改变某个指定参数的值,如

        sysctl -w net.ipv4.ip_forward=1

   -a   显示所有的系统参数

   -p   从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载

   如果仅仅是想临时改变某个系统参数的值,可以用两种方法来实现,例如想启用IP路由转发功能:

1
2
    1)  #echo 1 > /proc/sys/net/ipv4/ip_forward
    2)  #sysctl -w net.ipv4.ip_forward=1

 

   以上两种方法都可能立即开启路由功能,但如果系统重启,或执行了service network restart命令,所设置的值即会丢失,如果想永久保留配置,可以修改/etc/sysctl.conf文件,

1
net.ipv4.ip_forward=0改为net.ipv4.ip_forward=1

 

   sysctl 将 /proc/sys 下的文件视为可以更改的单个变量。以 /proc/sys 下的文件 /proc/sys/fs/file-max 为例,它表示系统中所允许的文件句柄的最大数目,这个文件被表示成 fs.file-max。

 

   这个示例揭示了 sysctl 表示法中的一些奇妙事情。由于 sysctl 只能更改 /proc/sys 目录下的变量,并且人们始终认为变量是在这个目录下,因此省略了变量名的那一部分(/proc/sys)。

   另一个要说明的更改是,将目录分隔符(正斜杠 /)换成了英文中的句号(点 .)。

   将 /proc/sys 中的文件转换成 sysctl 中的变量有两个简单的规则:

   1、去掉前面部分 /proc/sys。

   2、将文件名中的正斜杠变为点。

   这两条规则使您能将 /proc/sys 中的任一文件名转换成 sysctl 中的任一变量名。

   一般文件到变量的转换为:

   /proc/sys/dir/file --> dir.file

   dir1.dir2.file --> /proc/sys/dir1/dir2/file

可以使用命令 sysctl -a 查看所有可以更改的变量和其当前设置。

 

 

用 sysctl 还可以更改变量,它所做的工作与上面所用的 echo 方法完全一样。其表示法为:

sysctl -w dir.file="value"

还是用 file-max 作为示例,使用下面两种方法中的一种将该值更改为 16384:

sysctl -w fs.file-max="16384"

或者:

echo "16384" > /proc/sys/fs/file-max

 

   不要忘记 sysctl 不会将所做的更改添加到配置文件中;这要您用手工来完成。如果您希望在重新引导之后,前面所做的更改仍然有效,则必须维护这个配置文件。

 

   注:不是所有的分发版都提供 sysctl 支持。如果您的特定系统属于这种情况,则可以用上面所描述的 echo 和重定向方法,将这些命令添加到启动脚本中,这样系统每次引导时,都会执行它们。

 

 

   详细介绍有关 /proc 中每个文件的用法和确切信息超出了本文所涉及的范围。要获得任何关于本文没有涉及到的 /proc 文件的其它信息,一个最佳来源就是 Linux 内核源代码本身,它包含了一些非常优秀的文档。对于系统管理员,/proc 中的以下文件较有用。这不意味着它是一份详尽的说明,而只是日常使用中便于查阅的参考。

 

/proc/scsi

/proc/scsi/scsi

     作为系统管理员,需要了解的最有用内容是,在有热交换驱动器情况下,如何不重启系统就可以添加更多磁盘空间。假使不使用 /proc,您可以插入驱动器,但为了使系统识别新磁盘,必须随即重新引导系统。这里,可以用以下命令来使系统识别新的驱动器:

echo "scsi add-single-device w x y z" > /proc/scsi/scsi

为使该命令正常运行,必须指定正确的参数值 w、x、y 和 z,如下所示:

w 是主机适配器标识,第一个适配器为零(0)

x 是主机适配器上的 SCSI 通道,第一个通道为零(0)

y 是设备的 SCSI 标识

z 是 LUN 号,第一个 LUN 为零(0)

     一旦将磁盘添加到系统中之后,可以挂装任何先前已格式化的文件系统,也可以开始对它进行格式化等。例如,如果不确定磁盘是什么设备,或者想检查任何先前已有的分区,则可以用如 fdisk -l 这样的命令来向您报告这方面的信息。

相反的,在不重新引导系统的情况下将设备从系统中除去的命令是:

echo "scsi remove-single-device w x y z" > /proc/scsi/scsi

在输入这条命令并将热交换 SCSI 磁盘从系统中除去之前,请确保首先卸下已从该磁盘安装的任何文件系统。

 

/proc/sys/fs/

/proc/sys/fs/file-max

     该文件指定了可以分配的文件句柄的最大数目。如果用户得到的错误消息声明由于打开文件数已经达到了最大值,从而他们不能打开更多文件,则可能需要增加该值。可将这个值设置成有任意多个文件,并且能通过将一个新数字值写入该文件来更改该值。

缺省设置:4096

 

/proc/sys/fs/file-nr

该文件与 file-max 相关,它有三个值:

已分配文件句柄的数目

已使用文件句柄的数目

文件句柄的最大数目

该文件是只读的,仅用于显示信息。

 

/proc/sys/fs/inode-*

任何以名称“inode”开头的文件所执行的操作与上面那些以名称“file”开头的文件所执行的操作一样,但所执行的操作与索引节点有关,而与文件句柄无关。

 

/proc/sys/fs/overflowuid 和 /proc/sys/fs/overflowgid

这两个文件分别保存那些支持 16 位用户标识和组标识的任何文件系统的用户标识(UID)和组标识(GID)。可以更改这些值,但如果您确实觉得需要这样做,那么您可能会发现更改组和密码文件项更容易些。

缺省设置:65534

 

/proc/sys/fs/super-max

该文件指定超级块处理程序的最大数目。挂装的任何文件系统需要使用超级块,所以如果挂装了大量文件系统,则可能会用尽超级块处理程序。

缺省设置:256

 

/proc/sys/fs/super-nr

该文件显示当前已分配超级块的数目。该文件是只读的,仅用于显示信息。

 

/proc/sys/kernel

/proc/sys/kernel/acct

该文件有三个可配置值,根据包含日志的文件系统上可用空间的数量(以百分比表示),这些值控制何时开始进行进程记帐:

如果可用空间低于这个百分比值,则停止进程记帐

如果可用空间高于这个百分比值,则开始进程记帐

检查上面两个值的频率(以秒为单位)

要更改这个文件的某个值,应该回送用空格分隔开的一串数字。

缺省设置:2 4 30

如果包含日志的文件系统上只有少于 2% 的可用空间,则这些值会使记帐停止,如果有 4% 或更多可用空间,则再次启动记帐。每 30 秒做一次检查。

 

/proc/sys/kernel/ctrl-alt-del

该文件有一个二进制值,该值控制系统在接收到 ctrl+alt+delete 按键组合时如何反应。这两个值表示:

零(0)值表示捕获 ctrl+alt+delete,并将其送至 init 程序。这将允许系统可以完美地关闭和重启,就好象您输入 shutdown 命令一样。

壹(1)值表示不捕获 ctrl+alt+delete,将执行非干净的关闭,就好象直接关闭电源一样。

缺省设置:0

 

/proc/sys/kernel/domainname

该文件允许您配置网络域名。它没有缺省值,也许已经设置了域名,也许没有设置。

 

/proc/sys/kernel/hostname

该文件允许您配置网络主机名。它没有缺省值,也许已经设置了主机名,也许没有设置。

 

/proc/sys/kernel/msgmax

该文件指定了从一个进程发送到另一个进程的消息的最大长度。进程间的消息传递是在内核的内存中进行,不会交换到磁盘上,所以如果增加该值,则将增加操作系统所使用的内存数量。

缺省设置:8192

 

/proc/sys/kernel/msgmnb

该文件指定在一个消息队列中最大的字节数。

缺省设置:16384

 

/proc/sys/kernel/msgmni

该文件指定消息队列标识的最大数目。

缺省设置:16

 

/proc/sys/kernel/panic

该文件表示如果发生“内核严重错误(kernel panic)”,则内核在重新引导之前等待的时间(以秒为单位)。零(0)秒设置在发生内核严重错误时将禁止重新引导。

缺省设置:0

 

/proc/sys/kernel/printk

该文件有四个数字值,它们根据日志记录消息的重要性,定义将其发送到何处。关于不同日志级别的更多信息,请阅读 syslog(2) 联机帮助页。该文件的四个值为:

控制台日志级别:优先级高于该值的消息将被打印至控制台

缺省的消息日志级别:将用该优先级来打印没有优先级的消息

最低的控制台日志级别:控制台日志级别可被设置的最小值(最高优先级)

缺省的控制台日志级别:控制台日志级别的缺省值

缺省设置:6 4 1 7

 

/proc/sys/kernel/shmall

该文件是在任何给定时刻系统上可以使用的共享内存的总量(以字节为单位)。

缺省设置:2097152

 

/proc/sys/kernel/shmax

该文件指定内核所允许的最大共享内存段的大小(以字节为单位)。

缺省设置:33554432

 

/proc/sys/kernel/shmmni

该文件表示用于整个系统共享内存段的最大数目。

缺省设置:4096

 

/proc/sys/kernel/sysrq

如果该文件指定的值为非零,则激活 System Request Key。

缺省设置:0

 

/proc/sys/kernel/threads-max

该文件指定内核所能使用的线程的最大数目。

缺省设置:2048

 

/proc/sys/net

/proc/sys/net/core/message_burst

写新的警告消息所需的时间(以 1/10 秒为单位);在这个时间内所接收到的其它警告消息会被丢弃。这用于防止某些企图用消息“淹没”您系统的人所使用的拒绝服务(Denial of Service)攻击。

缺省设置:50(5 秒)

 

/proc/sys/net/core/message_cost

该文件存有与每个警告消息相关的成本值。该值越大,越有可能忽略警告消息。

缺省设置:5

 

/proc/sys/net/core/netdev_max_backlog

该文件指定了,在接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。

缺省设置:300

 

/proc/sys/net/core/optmem_max

该文件指定了每个套接字所允许的最大缓冲区的大小。

 

/proc/sys/net/core/rmem_default

该文件指定了接收套接字缓冲区大小的缺省值(以字节为单位)。

 

/proc/sys/net/core/rmem_max

该文件指定了接收套接字缓冲区大小的最大值(以字节为单位)。

 

/proc/sys/net/core/wmem_default

该文件指定了发送套接字缓冲区大小的缺省值(以字节为单位)。

 

/proc/sys/net/core/wmem_max

该文件指定了发送套接字缓冲区大小的最大值(以字节为单位)。

 

/proc/sys/net/ipv4

所有 IPv4 和 IPv6 的参数都被记录在内核源代码文档中。请参阅文件 /usr/src/linux/Documentation/networking/ip-sysctl.txt。

 

/proc/sys/net/ipv6

同 IPv4。

 

/proc/sys/vm

/proc/sys/vm/buffermem

该文件控制用于缓冲区内存的整个系统内存的数量(以百分比表示)。它有三个值,通过把用空格相隔的一串数字写入该文件来设置这三个值。

用于缓冲区的内存的最低百分比

如果发生所剩系统内存不多,而且系统内存正在减少这种情况,系统将试图维护缓冲区内存的数量。

用于缓冲区的内存的最高百分比

缺省设置:2 10 60

 

/proc/sys/vm/freepages

该文件控制系统如何应对各种级别的可用内存。它有三个值,通过把用空格相隔的一串数字写入该文件来设置这三个值。

如果系统中可用页面的数目达到了最低限制,则只允许内核分配一些内存。

如果系统中可用页面的数目低于这一限制,则内核将以较积极的方式启动交换,以释放内存,从而维持系统性能。

内核将试图保持这个数量的系统内存可用。低于这个值将启动内核交换。

缺省设置:512 768 1024

 

/proc/sys/vm/kswapd

该文件控制允许内核如何交换内存。它有三个值,通过把用空格相隔的一串数字写入该文件来设置这三个值:

内核试图一次释放的最大页面数目。如果想增加内存交换过程中的带宽,则需要增加该值。

内核在每次交换中试图释放页面的最少次数。

内核在一次交换中所写页面的数目。这对系统性能影响最大。这个值越大,交换的数据越多,花在磁盘寻道上的时间越少。然而,这个值太大会因“淹没”请求队列而反过来影响系统性能。

缺省设置:512 32 8

 

/proc/sys/vm/pagecache

该文件与 /proc/sys/vm/buffermem 的工作内容一样,但它是针对文件的内存映射和一般高速缓存。



 

 

/proc目录介绍:(摘自网络)

 

一、进程目录中的常见文件介绍
/proc目录中包含许多以数字命名的子目录,这些数字表示系统当前正在运行进程的进程号,里面包含对应进程相关的多个信息文件。

[root@rhel5 ~]# ll /proc
 total 0
 dr-xr-xr-x  5 root      root               0 Feb  8 17:08 1
 dr-xr-xr-x  5 root      root               0 Feb  8 17:08 10
 dr-xr-xr-x  5 root      root               0 Feb  8 17:08 11
 dr-xr-xr-x  5 root      root               0 Feb  8 17:08 1156
 dr-xr-xr-x  5 root      root               0 Feb  8 17:08 139
 dr-xr-xr-x  5 root      root               0 Feb  8 17:08 140
 dr-xr-xr-x  5 root      root               0 Feb  8 17:08 141
 dr-xr-xr-x  5 root      root               0 Feb  8 17:09 1417
 dr-xr-xr-x  5 root      root               0 Feb  8 17:09 1418

上面列出的是/proc目录中一些进程相关的目录,每个目录中是当程本身相关信息的文件。下面是作者系统(RHEL5.3)上运行的一个PID为2674的进程saslauthd的相关文件,其中有些文件是每个进程都会具有的,后文会对这些常见文件做出说明。

[root@rhel5 ~]# ll /proc/2674
 total 0
 dr-xr-xr-x 2 root root 0 Feb  8 17:15 attr
 -r-------- 1 root root 0 Feb  8 17:14 auxv
 -r--r--r-- 1 root root 0 Feb  8 17:09 cmdline
 -rw-r--r-- 1 root root 0 Feb  8 17:14 coredump_filter
 -r--r--r-- 1 root root 0 Feb  8 17:14 cpuset
 lrwxrwxrwx 1 root root 0 Feb  8 17:14 cwd -> /var/run/saslauthd
 -r-------- 1 root root 0 Feb  8 17:14 environ
 lrwxrwxrwx 1 root root 0 Feb  8 17:09 exe -> /usr/sbin/saslauthd
 dr-x------ 2 root root 0 Feb  8 17:15 fd
 -r-------- 1 root root 0 Feb  8 17:14 limits
 -rw-r--r-- 1 root root 0 Feb  8 17:14 loginuid
 -r--r--r-- 1 root root 0 Feb  8 17:14 maps
 -rw------- 1 root root 0 Feb  8 17:14 mem
 -r--r--r-- 1 root root 0 Feb  8 17:14 mounts
 -r-------- 1 root root 0 Feb  8 17:14 mountstats
 -rw-r--r-- 1 root root 0 Feb  8 17:14 oom_adj
 -r--r--r-- 1 root root 0 Feb  8 17:14 oom_score
 lrwxrwxrwx 1 root root 0 Feb  8 17:14 root -> /
 -r--r--r-- 1 root root 0 Feb  8 17:14 schedstat
 -r-------- 1 root root 0 Feb  8 17:14 smaps
 -r--r--r-- 1 root root 0 Feb  8 17:09 stat
 -r--r--r-- 1 root root 0 Feb  8 17:14 statm
 -r--r--r-- 1 root root 0 Feb  8 17:10 status
 dr-xr-xr-x 3 root root 0 Feb  8 17:15 task
 -r--r--r-- 1 root root 0 Feb  8 17:14 wchan

1.1、cmdline— 启动当前进程的完整命令,但僵尸进程目录中的此文件不包含任何信息;

[root@rhel5 ~]# more /proc/2674/cmdline 
 /usr/sbin/saslauthd

1.2、cwd— 指向当前进程运行目录的一个符号链接;
1.3、environ — 当前进程的环境变量列表,彼此间用空字符(NULL)隔开;变量用大写字母表示,其值用小写字母表示;

[root@rhel5 ~]# more /proc/2674/environ 
 TERM=linuxauthd

1.4、exe— 指向启动当前进程的可执行文件(完整路径)的符号链接,通过/proc/N/exe可以启动当前进程的一个拷贝;
1.5、fd — 这是个目录,包含当前进程打开的每一个文件的文件描述符(file descriptor),这些文件描述符是指向实际文件的一个符号链接;

[root@rhel5 ~]# ll /proc/2674/fd
 total 0
 lrwx------ 1 root root 64 Feb  8 17:17 0 -> /dev/null
 lrwx------ 1 root root 64 Feb  8 17:17 1 -> /dev/null
 lrwx------ 1 root root 64 Feb  8 17:17 2 -> /dev/null
 lrwx------ 1 root root 64 Feb  8 17:17 3 -> socket:[7990]
 lrwx------ 1 root root 64 Feb  8 17:17 4 -> /var/run/saslauthd/saslauthd.pid
 lrwx------ 1 root root 64 Feb  8 17:17 5 -> socket:[7991]
 lrwx------ 1 root root 64 Feb  8 17:17 6 ->  /var/run/saslauthd/mux.accept

1.6、limits— 当前进程所使用的每一个受限资源的软限制、硬限制和管理单元;此文件仅可由实际启动当前进程的UID用户读取;(2.6.24以后的内核版本支持此功能);
1.7、maps — 当前进程关联到的每个可执行文件和库文件在内存中的映射区域及其访问权限所组成的列表;

[root@rhel5 ~]# cat /proc/2674/maps 
 00110000-00239000 r-xp 00000000 08:02 130647      /lib/libcrypto.so.0.9.8e
 00239000-0024c000 rwxp  00129000 08:02 130647     /lib/libcrypto.so.0.9.8e
 0024c000-00250000 rwxp  0024c000 00:00 0 
 00250000-00252000 r-xp 00000000 08:02 130462      /lib/libdl-2.5.so
 00252000-00253000 r-xp 00001000 08:02 130462      /lib/libdl-2.5.so


1.8、mem — 当前进程所占用的内存空间,由open、read和lseek等系统调用使用,不能被用户读取;
1.9、root — 指向当前进程运行根目录的符号链接;在Unix和Linux系统上,通常采用chroot命令使每个进程运行于独立的根目录;
1.10、stat — 当前进程的状态信息,包含一系统格式化后的数据列,可读性差,通常由ps命令使用;
1.11、statm — 当前进程占用内存的状态信息,通常以“页面”(page)表示;
1.12、status — 与stat所提供信息类似,但可读性较好,如下所示,每行表示一个属性信息;其详细介绍请参见 proc的man手册页;

[root@rhel5 ~]# more /proc/2674/status 
 Name:   saslauthd
State:  S  (sleeping)
 SleepAVG:       0%
 Tgid:   2674
 Pid:    2674
 PPid:   1
 TracerPid:      0
 Uid:    0       0        0       0
 Gid:    0       0        0       0
 FDSize: 32
 Groups:
 VmPeak:     5576 kB
 VmSize:     5572 kB
 VmLck:         0 kB
 VmHWM:       696 kB
 VmRSS:       696 kB
 …………

1.13、task— 目录文件,包含由当前进程所运行的每一个线程的相关信息,每个线程的相关信息文件均保存在一个由线程号(tid)命名的目录中,这类似于其内容类似于每个进程目录中的内容;(内核2.6版本以后支持此功能)


二、/proc目录下常见的文件介绍
2.1、/proc/apm
高级电源管理(APM)版本信息及电池相关状态信息,通常由apm命令使用;
2.2、/proc/buddyinfo
用于诊断内存碎片问题的相关信息文件;

2.3、/proc/cmdline
在启动时传递至内核的相关参数信息,这些信息通常由lilo或grub等启动管理工具进行传递;

[root@rhel5 ~]# more /proc/cmdline 
 ro root=/dev/VolGroup00/LogVol00 rhgb quiet

2.4、/proc/cpuinfo
处理器的相关信息的文件;
2.5、/proc/crypto
系统上已安装的内核使用的密码算法及每个算法的详细信息列表;

[root@rhel5 ~]# more /proc/crypto 
 name         : crc32c
 driver       : crc32c-generic
 module       : kernel
 priority     : 0
 type         : digest
 blocksize    : 32
 digestsize   : 4
 …………

2.6、/proc/devices
系统已经加载的所有块设备和字符设备的信息,包含主设备号和设备组(与主设备号对应的设备类型)名;

[root@rhel5 ~]# more /proc/devices 
 Character devices:
   1 mem
   4 /dev/vc/0
   4 tty
   4 ttyS
   …………

 Block devices:
   1 ramdisk
   2 fd
   8 sd
   …………

2.7、/proc/diskstats
每块磁盘设备的磁盘I/O统计信息列表;(内核2.5.69以后的版本支持此功能)

2.8、/proc/dma
每个正在使用且注册的ISA DMA通道的信息列表;

[root@rhel5 ~]# more /proc/dma
 2: floppy
 4: cascade

2.9、/proc/execdomains
内核当前支持的执行域(每种操作系统独特“个性”)信息列表;

[root@rhel5 ~]# more /proc/execdomains 
 0-0     Linux                    [kernel]

2.10、/proc/fb
帧缓冲设备列表文件,包含帧缓冲设备的设备号和相关驱动信息;
2.11、/proc/filesystems
当前被内核支持的文件系统类型列表文件,被标示为nodev的文件系统表示不需要块设备的支持;通常mount一个设备时,如果没有指定文件系统类型将通过此文件来决定其所需文件系统的类型;

[root@rhel5 ~]# more /proc/filesystems 
 nodev   sysfs
 nodev   rootfs
 nodev   proc
         iso9660
         ext3
 …………
 …………

2.12、/proc/interrupts
X86或X86_64体系架构系统上每个IRQ相关的中断号列表;多路处理器平台上每个CPU对于每个I/O设备均有自己的中断号;

[root@rhel5 ~]# more /proc/interrupts 
            CPU0        
   0:    1305421     IO-APIC-edge  timer
   1:         61     IO-APIC-edge  i8042
 185:       1068   IO-APIC-level  eth0
 …………

2.13、/proc/iomem
每个物理设备上的记忆体(RAM或者ROM)在系统内存中的映射信息;

[root@rhel5 ~]# more /proc/iomem 
 00000000-0009f7ff : System RAM
0009f800-0009ffff :  reserved
000a0000-000bffff :  Video RAM area
000c0000-000c7fff : Video ROM
   …………

2.14、/proc/ioports
当前正在使用且已经注册过的与物理设备进行通讯的输入-输出端口范围信息列表;如下面所示,第一列表示注册的I/O端口范围,其后表示相关的设备;

[root@rhel5 ~]# less /proc/ioports 
 0000-001f : dma1
 0020-0021 : pic1
 0040-0043 : timer0
 0050-0053 : timer1
 0060-006f : keyboard
 …………

2.15、/proc/kallsyms
模块管理工具用来动态链接或绑定可装载模块的符号定义,由内核输出;(内核2.5.71以后的版本支持此功能);通常这个文件中的信息量相当大;

[root@rhel5 ~]# more /proc/kallsyms 
 c04011f0 T _stext
 c04011f0 t  run_init_process
 c04011f0 T stext
   …………

2.16、/proc/kcore
系统使用的物理内存,以ELF核心文件(core file)格式存储,其文件大小为已使用的物理内存(RAM)加上4KB;这个文件用来检查内核数据结构的当前状态,因此,通常由GBD通常调试工具使用,但不能使用文件查看命令打开此文件;
2.17、/proc/kmsg
此文件用来保存由内核输出的信息,通常由/sbin/klogd或/bin/dmsg等程序使用,不要试图使用查看命令打开此文件;

2.18、/proc/loadavg
保存关于CPU和磁盘I/O的负载平均值,其前三列分别表示每1秒钟、每5秒钟及每15秒的负载平均值,类似于uptime命令输出的相关信息;第四列是由斜线隔开的两个数值,前者表示当前正由内核调度的实体(进程和线程)的数目,后者表示系统当前存活的内核调度实体的数目;第五列表示此文件被查看前最近一个由内核创建的进程的PID;

[root@rhel5 ~]# more /proc/loadavg 
 0.45 0.12 0.04 4/125 5549

 [root@rhel5 ~]# uptime
 06:00:54 up  1:06,  3 users,  load average:  0.45, 0.12, 0.04

2.19、/proc/locks
保存当前由内核锁定的文件的相关信息,包含内核内部的调试数据;每个锁定占据一行,且具有一个惟一的编号;如下输出信息中每行的第二列表示当前锁定使用的锁定类别,POSIX表示目前较新类型的文件锁,由lockf系统调用产生,FLOCK是传统的UNIX文件锁,由flock系统调用产生;第三列也通常由两种类型,ADVISORY表示不允许其他用户锁定此文件,但允许读取,MANDATORY表示此文件锁定期间不允许其他用户任何形式的访问;

[root@rhel5 ~]# more /proc/locks 
 1: POSIX  ADVISORY  WRITE 4904 fd:00:4325393 0 EOF
 2: POSIX  ADVISORY  WRITE 4550 fd:00:2066539 0 EOF
 3: FLOCK  ADVISORY  WRITE 4497 fd:00:2066533 0 EOF

2.20、/proc/mdstat
保存RAID相关的多块磁盘的当前状态信息,在没有使用RAID机器上,其显示为如下状态:

[root@rhel5 ~]# less /proc/mdstat 
 Personalities : 
 unused devices: <none>

2.21、/proc/meminfo
系统中关于当前内存的利用状况等的信息,常由free命令使用;可以使用文件查看命令直接读取此文件,其内容显示为两列,前者为统计属性,后者为对应的值;

[root@rhel5 ~]# less /proc/meminfo 
 MemTotal:       515492 kB
 MemFree:          8452 kB
 Buffers:         19724 kB
 Cached:         376400 kB
 SwapCached:          4 kB
 …………

2.22、/proc/mounts
在内核2.4.29版本以前,此文件的内容为系统当前挂载的所有文件系统,在2.4.19以后的内核中引进了每个进程使用独立挂载名称空间的方式,此文件则随之变成了指向/proc/self/mounts(每个进程自身挂载名称空间中的所有挂载点列表)文件的符号链接;/proc/self是一个独特的目录,后文中会对此目录进行介绍;

[root@rhel5 ~]# ll /proc |grep mounts
 lrwxrwxrwx  1 root      root              11 Feb  8 06:43 mounts ->  self/mounts



如下所示,其中第一列表示挂载的设备,第二列表示在当前目录树中的挂载点,第三点表示当前文件系统的类型,第四列表示挂载属性(ro或者rw),第五列和第六列用来匹配/etc/mtab文件中的转储(dump)属性;


 [root@rhel5 ~]# more /proc/mounts 
 rootfs / rootfs rw 0 0
 /dev/root / ext3 rw,data=ordered 0 0
 /dev /dev tmpfs rw 0 0
 /proc /proc proc rw 0 0
 /sys /sys sysfs rw 0 0
 /proc/bus/usb /proc/bus/usb usbfs rw 0 0
 …………

2.23、/proc/modules
当前装入内核的所有模块名称列表,可以由lsmod命令使用,也可以直接查看;如下所示,其中第一列表示模块名,第二列表示此模块占用内存空间大小,第三列表示此模块有多少实例被装入,第四列表示此模块依赖于其它哪些模块,第五列表示此模块的装载状态(Live:已经装入;Loading:正在装入;Unloading:正在卸载),第六列表示此模块在内核内存(kernel memory)中的偏移量;

[root@rhel5 ~]# more /proc/modules 
 autofs4 24517 2 - Live 0xe09f7000
 hidp 23105 2 - Live 0xe0a06000
 rfcomm 42457 0 - Live 0xe0ab3000
l2cap 29505 10 hidp,rfcomm, Live 0xe0aaa000
 …………

2.24、/proc/partitions
块设备每个分区的主设备号(major)和次设备号(minor)等信息,同时包括每个分区所包含的块(block)数目(如下面输出中第三列所示);

[root@rhel5 ~]# more /proc/partitions 
 major minor  #blocks  name

    8     0   20971520 sda
    8     1     104391 sda1
    8     2    6907950 sda2
    8     3    5630782 sda3
    8     4           1 sda4
    8     5    3582463 sda5

2.25、/proc/pci
内核初始化时发现的所有PCI设备及其配置信息列表,其配置信息多为某PCI设备相关IRQ信息,可读性不高,可以用“/sbin/lspci –vb”命令获得较易理解的相关信息;在2.6内核以后,此文件已为/proc/bus/pci目录及其下的文件代替;

2.26、/proc/slabinfo
在内核中频繁使用的对象(如inode、dentry等)都有自己的cache,即slab pool,而/proc/slabinfo文件列出了这些对象相关slap的信息;详情可以参见内核文档中slapinfo的手册页;

[root@rhel5 ~]# more /proc/slabinfo 
 slabinfo - version: 2.1
 # name            <active_objs>  <num_objs> <objsize> <objperslab> <pagesperslab> :  tunables <limit> <batchcount> <sharedfactor> : slabdata  <ac
 tive_slabs> <num_slabs> <sharedavail>
 rpc_buffers            8       8   2048    2    1 :  tunables   24   12    8 : slabdata       4      4      0
 rpc_tasks               8     20    192    20    1 : tunables  120   60     8 : slabdata      1      1       0
 rpc_inode_cache        6       9    448    9    1 : tunables    54   27    8 : slabdata       1      1      0
 …………
 …………
 …………

2.27、/proc/stat
实时追踪自系统上次启动以来的多种统计信息;如下所示,其中,
“cpu”行后的八个值分别表示以1/100(jiffies)秒为单位的统计值(包括系统运行于用户模式、低优先级用户模式,运系统模式、空闲模式、I/O等待模式的时间等);
“intr”行给出中断的信息,第一个为自系统启动以来,发生的所有的中断的次数;然后每个数对应一个特定的中断自系统启动以来所发生的次数;
“ctxt”给出了自系统启动以来CPU发生的上下文交换的次数。
“btime”给出了从系统启动到现在为止的时间,单位为秒;
“processes (total_forks) 自系统启动以来所创建的任务的个数目;
“procs_running”:当前运行队列的任务的数目;
“procs_blocked”:当前被阻塞的任务的数目;

[root@rhel5 ~]# more /proc/stat
 cpu  2751 26 5771 266413 2555 99 411 0
 cpu0 2751 26 5771 266413 2555 99 411 0
 intr 2810179 2780489 67 0 3 3 0 5 0 1 0 0 0 1707 0 0 9620 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 5504 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12781 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 427300
 btime 1234084100
 processes 3491
 procs_running 1
 procs_blocked 0

2.28、/proc/swaps
当前系统上的交换分区及其空间利用信息,如果有多个交换分区的话,则会每个交换分区的信息分别存储于/proc/swap目录中的单独文件中,而其优先级数字越低,被使用到的可能性越大;下面是作者系统中只有一个交换分区时的输出信息;

[root@rhel5 ~]# more /proc/swaps 
 Filename                                  Type             Size    Used    Priority
 /dev/sda8                                 partition       642560  0        -1

2.29、/proc/uptime
系统上次启动以来的运行时间,如下所示,其第一个数字表示系统运行时间,第二个数字表示系统空闲时间,单位是秒;

[root@rhel5 ~]# more /proc/uptime 
 3809.86 3714.13

2.30、/proc/version
当前系统运行的内核版本号,在作者的RHEL5.3上还会显示系统安装的gcc版本,如下所示;

[root@rhel5 ~]# more /proc/version 
 Linux version 2.6.18-128.el5 (mockbuild@hs20-bc1-5.build.redhat.com)  (gcc version 4.1.2 20080704 (Red Hat 4.1.2-44)) #1 SMP Wed Dec 17 11:42:39  EST 2008

2.31、/proc/vmstat
当前系统虚拟内存的多种统计数据,信息量可能会比较大,这因系统而有所不同,可读性较好;下面为作者机器上输出信息的一个片段;(2.6以后的内核支持此文件)

[root@rhel5 ~]# more /proc/vmstat 
 nr_anon_pages 22270
 nr_mapped 8542
 nr_file_pages 47706
 nr_slab 4720
 nr_page_table_pages 897
 nr_dirty 21
 nr_writeback 0
 …………

2.32、/proc/zoneinfo
内存区域(zone)的详细信息列表,信息量较大,下面列出的是一个输出片段:

[root@rhel5 ~]# more /proc/zoneinfo 
 Node 0, zone      DMA
   pages free     1208
         min      28
         low      35
         high     42
         active   439
         inactive 1139
         scanned  0 (a: 7 i: 30)
         spanned  4096
         present  4096
     nr_anon_pages 192
     nr_mapped    141
     nr_file_pages 1385
     nr_slab      253
     nr_page_table_pages 2
     nr_dirty     523
     nr_writeback 0
     nr_unstable  0
     nr_bounce    0
         protection: (0, 0, 296, 296)
   pagesets
   all_unreclaimable: 0
   prev_priority:     12
   start_pfn:         0
 …………

 

三、/proc/sys目录详解
与/proc下其它文件的“只读”属性不同的是,管理员可对/proc/sys子目录中的许多文件内容进行修改以更改内核的运行特性,事先可以使用“ls -l”命令查看某文件是否“可写入”。写入操作通常使用类似于“echo  DATA> /path/to/your/filename”的格式进行。需要注意的是,即使文件可写,其一般也不可以使用编辑器进行编辑。
3.1、/proc/sys/debug 子目录
此目录通常是一空目录;
3.2、/proc/sys/dev 子目录
为系统上特殊设备提供参数信息文件的目录,其不同设备的信息文件分别存储于不同的子目录中,如大多数系统上都会具有的/proc/sys/dev/cdrom和/proc/sys/dev/raid(如果内核编译时开启了支持raid的功能)目录,其内存储的通常是系统上cdrom和raid的相关参数信息文件。