lhbpping

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: :: 管理 ::

在linux下,/dev目录是很重要的,各种设备都在下面。下面简单总结一下:

  dev是设备(device)的英文缩写。/dev这个目录对所有的用户都十分重要。因为在这个目录中包含了所有Linux系统中使用的外部设备。但是这里并不是放的外部设备的驱动程序,这一点和windows,dos操作系统不一样。它实际上是一个访问这些外部设备的端口。我们可以非常方便地去访问这些外部设备,和访问一个文件,一个目录没有任何区别。

  Linux沿袭Unix的风格,将所有设备认成是一个文件。

  关于一些特殊设备,我曾经总结过一些:

  /dev/null和/dev/zero:

 1 在类Unix系统(包括Linux)中,
 2 /dev/null 它是空设备,也称为位桶(bit bucket)或者黑洞(black hole)。你可以向它输入任何数据,
 3 但任何写入它的数据都会被抛弃。通常用于处理不需要的输出流。(当然,它也可以作为空的输入流)
 4  
 5 /dev/zero 该设备无穷尽地提供空字符(ASCII NUL, 0x00),可以使用任何你需要的数目。
 6 它通常用于向设备或文件写入字符串0,用于初始化数据存储。(当然,也可作为输出流的接受容器)
 7  
 8 两个使用实例如下:
 9 dd if=/dev/zero f=~/test.txt bs=1k count=1
10 产生1KB大小的文件~/text.txt
11  
12 find / -name access_log 2>/dev/null
13 find命令在/目录下查找名为access_log的文件,并且错误输出不会显示出来(文件描述符2被重定向
14 到/dev/null)。

/dev/tty、/dev/console、/dev/pty、/dev/pts等:

 1 基本概念:
 2 1>tty(终端设备的统称):
 3 tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通
 4 过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。
 5 终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。
 6 2>pty(伪终端,虚拟终端):
 7 但是如果我们远程telnet到主机或使用xterm时不也需要一个终端交互么?是的,这就是虚拟终端
 8 pty(pseudo-tty)
 9 3>pts/ptmx(pts/ptmx结合使用,进而实现pty):
10 pts(pseudo-terminal slave)是pty的实现方法,与ptmx(pseudo-terminal master)配合使用实现pty。
11  
12 在Linux系统的设备特殊文件目录/dev/下,终端特殊设备文件一般有以下几种:
13 1、串行端口终端(/dev/ttySn)
14 串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口
15 都看作是一个字符设备。有段时间这些串行端口设备通常被称为终端设备,因为那时它的最大用途就是
16 用来连接终端。这些串行端口所对应的设备名称是/dev/tts/0(或/dev/ttyS0), /dev/tts/1(
17 或/dev/ttyS1)等,设备号分别是(4,0), (4,1)等,分别对应于DOS系统下的COM1、COM2等。若要向一个
18 端口发送数据,可以在命令行上把标准输出重定向到这些特殊文件名上即可。例如,在命令行提示符下
19 键入:echo test > /dev/ttyS1会把单词”test”发送到连接在ttyS1(COM2)端口的设备上。
20 2、伪终端(/dev/pty/)
21 伪终端(Pseudo Terminal)是成对的逻辑终端设备(即master和slave设备, 对master的操作会反映到
22 slave上)。
23 例如/dev/ptyp3和/dev/ttyp3(或者在设备文件系统中分别是/dev/pty /m3和 /dev/pty/s3)。它们与实
24 际物理设备并不直接相关。如果一个程序把ptyp3(master设备)看作是一个串行端口设备,则它对该端口
25 的读/写操作会反映在该逻辑终端设备对应的另一个ttyp3(slave设备)上面。而ttyp3则是另一个程序用
26 于读写操作的逻辑设备。telnet主机A就是通过“伪终端”与主机A的登录程序进行通信。
27 3、控制终端(/dev/tty)
28 如果当前进程有控制终端(Controlling Terminal)的话,那么/dev/tty就是当前进程的控制终端的设备
29 特殊文件。可以使用命令”ps –ax”来查看进程与哪个控制终端相连。对于你登录的shell,/dev/tty就
30 是你使用的终端,设备号是(5,0)。使用命令”tty”可以查看它具体对应哪个实际终端设备。
31 /dev/tty有些类似于到实际所使用终端设备的一个联接。
32 4、控制台终端(/dev/ttyn, /dev/console)
33 在Linux 系统中,计算机显示器通常被称为控制台终端 (Console)。
34 它仿真了类型为Linux的一种终端(TERM=Linux),并且有一些设备特殊文件与之相关联:tty0、tty1、
35 tty2 等。当你在控制台上登录时,使用的是tty1。使用Alt+[F1—F6]组合键时,我们就可以切换到
36 tty2、tty3等上面去。tty1–tty6等称为虚拟终端,而tty0则是当前所使用虚拟终端的一个别名,系统所
37 产生的信息会发送到该终端上(这时也叫控制台终端)。因此不管当前正在使用哪个虚拟终端,系统信
38 息都会发送到控制台终端上。/dev/console即控制台,是与操作系统交互的设备,系统将一些信息直接
39 输出到控制台上。目前只有在单用户模式下,才允许用户登录控制台。
40 5 虚拟终端(/dev/pts/n)
41 在Xwindows模式下的伪终端.如我在Kubuntu下用konsole,就是用的虚拟终端,用tty命令可看到
42 /dev/pts/143 6 其它类型
44 Linux系统中还针对很多不同的字符设备存在有很多其它种类的终端设备特殊文件。例如针对ISDN设备的
45 /dev/ttyIn终端设备等。这里不再赘述。
46  
47 tty设备包括虚拟控制台,串口以及伪终端设备。
48 /dev/tty代表当前tty设备,在当前的终端中输入 echo “hello” > /dev/tty ,都会直接显示在当前的
49 终端中。

设备文件分为两种:块设备文件(b)和字符设备文件(c)

  设备文件一般存放在/dev目录下,对常见设备文件作如下说明:

  /dev/hd[a-t]:IDE设备

  /dev/sd[a-z]:SCSI设备

  /dev/fd[0-7]:标准软驱

  /dev/md[0-31]:软raid设备

  /dev/loop[0-7]:本地回环设备

  /dev/ram[0-15]:内存

  /dev/null:无限数据接收设备,相当于黑洞

  /dev/zero:无限零资源

  /dev/tty[0-63]:虚拟终端

  /dev/ttyS[0-3]:串口

  /dev/lp[0-3]:并口

  /dev/console:控制台

  /dev/fb[0-31]:framebuffer

  /dev/cdrom => /dev/hdc

  /dev/modem => /dev/ttyS[0-9]

  /dev/pilot => /dev/ttyS[0-9]

  /dev/random:随机数设备

  /dev/urandom:随机数设备

  (PS:随机数设备,后面我会再写篇博客总结一下)

  /dev目录下的节点是怎么创建的?

  devf或者udev会自动帮你创建得。

  kobject是sysfs文件系统的基础,udev通过监测、检测sysfs来获取新创建的设备的。

 

Linux系统各个目录的作用

 /

  这就是根目录。对你的电脑来说,有且只有一个根目录。所有的东西,我是说所有的东西都是从这里开始。举个例子:当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。

/root

  这是系统管理员(root user)的目录。对于系统来说,系统管理员就好比是上帝,它能对系统做任何事情,甚至包括删除你的文件。因此,请小心使用root帐号。

/bin

  这里存放了标准的(或者说是缺省的)linux的工具,比如像“ls”、“vi”还有“more”等等。通常来说,这个目录已经包含在你的“path”系统变量里面了。什么意思呢?就是:当你在终端里输入ls,系统就会去/bin目录下面查找是不是有ls这个程序。

/etc

  这里主要存放了系统配置方面的文件。举个例子:你安装了samba这个套件,当你想要修改samba配置文件的时候,你会发现它们(配置文件)就在/etc/samba目录下。

/dev

  这里主要存放与设备(包括外设)有关的文件(unix和linux系统均把设备当成文件)。想连线打印机吗?系统就是从这个目录开始工作的。另外还有一些包括磁盘驱动、USB驱动等都放在这个目录。

/home

  这里主要存放你的个人数据。具体每个用户的设置文件,用户的桌面文件夹,还有用户的数据都放在这里。每个用户都有自己的用户目录,位置为:/home/用户名。当然,root用户除外。

/tmp

  这是临时目录。对于某些程序来说,有些文件被用了一次两次之后,就不会再被用到,像这样的文件就放在这里。有些linux系统会定期自动对这个目录进行清理,因此,千万不要把重要的数据放在这里。


/usr

  在这个目录下,你可以找到那些不适合放在/bin或/etc目录下的额外的工具。比如像游戏阿,一些打印工具拉等等。/usr目录包含了许多子 目录:/usr/bin目录用于存放程序;/usr/share用于存放一些共享的数据,比如音乐文件或者图标等等;/usr/lib目录用于存放那些不 能直接运行的,但却是许多程序运行所必需的一些函数库文件。你的软件包管理器(应该是“新立得”吧)会自动帮你管理好/usr目录的。

/opt

  这里主要存放那些可选的程序。你想尝试最新的firefox测试版吗?那就装到/opt目录下吧,这样,当你尝试完,想删掉firefox的时 候,你就可以直接删除它,而不影响系统其他任何设置。安装到/opt目录下的程序,它所有的数据、库文件等等都是放在同个目录下面。

  举个例子:刚才装的测试版firefox,就可以装到/opt/firefox_beta目录下,/opt/firefox_beta目录下面 就包含了运行firefox所需要的所有文件、库、数据等等。要删除firefox的时候,你只需删除/opt/firefox_beta目录即可,非常 简单。

/usr/local

  这里主要存放那些手动安装的软件,即不是通过“新立得”或apt-get安装的软件。它和/usr目录具有相类似的目录结构。让软件包管理器来管理/usr目录,而把自定义的脚本(scripts)放到/usr/local目录下面,我想这应该是个不错的主意。

 /media

  有些linux的发行版使用这个目录来挂载那些usb接口的移动硬盘(包括U盘)、CD/DVD驱动器等等。

 

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


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

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


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


/proc/cmdline文件

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

示例:

1 [root@localhost proc]# cat cmdline
2 
3 ro root=LABEL=/ rhgb quiet




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


/proc/cpuinfo文件

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

示例:

 1 [root@localhost proc]# cat cpuinfo
 2 
 3 processor : 0
 4 
 5 vendor_id : AuthenticAMD
 6 
 7 cpu family : 6
 8 
 9 model : 8
10 
11 model name : AMD Athlon(tm) XP 1800+
12 
13 stepping : 1
14 
15 cpu MHz : 1530.165
16 
17 cache size : 256 KB
18 
19 fdiv_bug : no
20 
21 hlt_bug : no
22 
23 f00f_bug : no
24 
25 coma_bug : no
26 
27 fpu : yes
28 
29 fpu_exception : yes
30 
31 cpuid level : 1
32 
33 wp : yes
34 
35 flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 mmx fxsr sse syscall mmxext 3dnowext 3dnow
36 
37 bogomips : 2998.27



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


/proc/devices文件

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

示例:

 1 [root@localhost /]# cat /proc/devices
 2 
 3 Character devices:
 4 
 5 1 mem
 6 
 7 4 /dev/vc/0
 8 
 9 4 tty
10 
11 4 ttyS
12 
13 5 /dev/tty
14 
15 5 /dev/console
16 
17 5 /dev/ptmx
18 
19 6 lp
20 
21 7 vcs
22 
23 10 misc
24 
25 13 input
26 
27 14 sound
28 
29 29 fb
30 
31 36 netlink
32 
33 116 alsa
34 
35 128 ptm
36 
37 136 pts
38 
39 180 usb
40 
41 
42 
43 
44 Block devices:
45 
46 1 ramdisk
47 
48 2 fd
49 
50 3 ide0
51 
52 9 md
53 
54 22 ide1
55 
56 253 device-mapper
57 
58 254 mdp 


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


/proc/dma文件

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

示例:

1 [root@localhost ~]# cat /proc/dma
2 
3 4: cascade




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


/proc/filesystems文件

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

示例:

 1 [root@localhost proc]# cat /proc/filesystems
 2 nodev sysfs
 3 nodev rootfs
 4 nodev bdev
 5 nodev proc
 6 nodev sockfs
 7 nodev binfmt_misc
 8 nodev usbfs
 9 nodev usbdevfs
10 nodev futexfs
11 nodev tmpfs
12 nodev pipefs
13 nodev eventpollfs
14 nodev devpts
15 ext2
16 nodev ramfs
17 nodev hugetlbfs
18 iso9660
19 nodev mqueue
20 nodev selinuxfs
21 ext3
22 nodev rpc_pipefs
23 nodev autofs


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


/proc/interrupts文件

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

示例:

 1 [root@localhost SPECS]# cat /proc/interrupts
 2 CPU0
 3 0: 7039406 XT-PIC timer
 4 1: 6533 XT-PIC i8042
 5 2: 0 XT-PIC cascade
 6 3: 0 XT-PIC uhci_hcd
 7 5: 108 XT-PIC VIA8233, uhci_hcd
 8 8: 1 XT-PIC rtc
 9 9: 0 XT-PIC acpi
10 10: 0 XT-PIC ehci_hcd
11 11: 17412 XT-PIC uhci_hcd, eth0
12 12: 140314 XT-PIC i8042
13 14: 37897 XT-PIC ide0
14 15: 60813 XT-PIC ide1
15 NMI: 0
16 ERR: 1


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


/proc/ioports文件

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

示例:

 1 [root@localhost SPECS]# cat /proc/ioports
 2 0000-001f : dma1
 3 0020-0021 : pic1
 4 0040-0043 : timer0
 5 0050-0053 : timer1
 6 0060-006f : keyboard
 7 0070-0077 : rtc
 8 0080-008f : dma page reg
 9 00a0-00a1 : pic2
10 00c0-00df : dma2
11 00f0-00ff : fpu
12 0170-0177 : ide1
13 01f0-01f7 : ide0
14 0376-0376 : ide1
15 0378-037a : parport0
16 037b-037f : parport0
17 03c0-03df : vga+
18 03f6-03f6 : ide0
19 03f8-03ff : serial
20 0800-0803 : PM1a_EVT_BLK
21 0804-0805 : PM1a_CNT_BLK
22 0808-080b : PM_TMR
23 0810-0815 : ACPI CPU throttle
24 0820-0823 : GPE0_BLK
25 0cf8-0cff : PCI conf1
26 dc00-dcff : 0000:00:12.0
27 dc00-dcff : via-rhine
28 e000-e0ff : 0000:00:11.5
29 e000-e0ff : VIA8233
30 e400-e41f : 0000:00:10.0
31 e400-e41f : uhci_hcd
32 e800-e81f : 0000:00:10.1
33 e800-e81f : uhci_hcd
34 ec00-ec1f : 0000:00:10.2
35 ec00-ec1f : uhci_hcd
36 fc00-fc0f : 0000:00:11.1
37 fc00-fc07 : ide0
38 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分钟里运行队列中的平均任务数得到的。随后是正在运行的任务数和总任务数。最后是上次使用的进程号。

示例:

1 [root@localhost ~]# cat /proc/loadavg
2 0.11 0.16 0.14 3/126 3912 

 


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


/proc/locks文件

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

示例:

 1 [root@localhost redhat]# cat /proc/locks
 2 1: POSIX ADVISORY READ 3822 03:0a:1067117 0 EOF
 3 2: POSIX ADVISORY READ 3822 03:0a:1067138 0 EOF
 4 3: POSIX ADVISORY WRITE 3326 03:0a:2326540 0 EOF
 5 4: POSIX ADVISORY WRITE 2639 03:0a:2966595 0 EOF
 6 5: FLOCK ADVISORY WRITE 2591 03:0a:2966586 0 EOF
 7 6: POSIX ADVISORY WRITE 2540 03:0a:2966578 0 EOF
 8 7: POSIX ADVISORY WRITE 2530 03:0a:2966579 0 EOF
 9 8: POSIX ADVISORY WRITE 2402 03:0a:2966563 0 EOF
10 9: POSIX ADVISORY WRITE 2371 03:0a:2966561 0 EOF 

proc/mdstat文件

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

示例:

1 [root@localhost ~]# cat /proc/mdstat
2 Personalities :
3 unused devices: <none>

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


/proc/meminfo文件

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

示例:

 1 [root@localhost ~]# cat /proc/meminfo
 2 MemTotal:    223812 kB
 3 MemFree:       3764 kB
 4 Buffers:       9148 kB
 5 Cached:       92112 kB
 6 SwapCached:        364 kB
 7 Active:       183640 kB
 8 Inactive:        17196 kB
 9 HighTotal:           0 kB
10 HighFree:          0 kB
11 LowTotal:    223812 kB
12 LowFree:       3764 kB
13 SwapTotal:    626524 kB
14 SwapFree:    620328 kB
15 Dirty:              12 kB
16 Writeback:           0 kB
17 Mapped:       142880 kB
18 Slab:          12668 kB
19 Committed_AS: 376732 kB
20 PageTables:    2336 kB
21 VmallocTotal:   3907576 kB
22 VmallocUsed:    2968 kB
23 VmallocChunk:   3904224 kB
24 HugePages_Total:     0
25 HugePages_Free:    0
26 Hugepagesize:     4096 kB

 



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


/proc/misc文件

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

示例:

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

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


/proc/modules文件

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

示例:

 1 [root@localhost /]# cat /proc/modules
 2 md5 4033 1 - Live 0x10a7f000
 3 ipv6 232577 8 - Live 0x10b0c000
 4 parport_pc 24705 1 - Live 0x10a8b000
 5 lp 11565 0 - Live 0x10a7b000
 6 parport 41737 2 parport_pc,lp, Live 0x10a55000
 7 autofs4 24005 0 - Live 0x10a74000
 8 i2c_dev 10433 0 - Live 0x109d2000
 9 i2c_core 22081 1 i2c_dev, Live 0x10a6d000
10 sunrpc 160421 1 - Live 0x10a9d000
11 ipt_REJECT 6465 1 - Live 0x109da000
12 ipt_state 1857 5 - Live 0x109eb000
13 ip_conntrack 40693 1 ipt_state, Live 0x10a62000
14 iptable_filter 2753 1 - Live 0x10896000
15 ip_tables 16193 3 ipt_REJECT,ipt_state,iptable_filter, Live 0x109ed000
16 dm_mod 54741 0 - Live 0x109f8000
17 button 6481 0 - Live 0x10905000
18 battery 8517 0 - Live 0x109d6000
19 ac 4805 0 - Live 0x10908000
20 uhci_hcd 31449 0 - Live 0x109dd000
21 ehci_hcd 31557 0 - Live 0x10949000
22 snd_via82xx 27237 2 - Live 0x10953000
23 snd_ac97_codec 64401 1 snd_via82xx, Live 0x10912000
24 snd_pcm_oss 47609 0 - Live 0x1093c000
25 snd_mixer_oss 17217 2 snd_pcm_oss, Live 0x1090c000
26 snd_pcm 97993 2 snd_via82xx,snd_pcm_oss, Live 0x10923000
27 snd_timer 29765 1 snd_pcm, Live 0x108ec000
28 snd_page_alloc 9673 2 snd_via82xx,snd_pcm, Live 0x108bd000
29 gameport 4801 1 snd_via82xx, Live 0x108a6000
30 snd_mpu401_uart 8769 1 snd_via82xx, Live 0x108b9000
31 snd_rawmidi 26725 1 snd_mpu401_uart, Live 0x108e4000
32 snd_seq_device 8137 1 snd_rawmidi, Live 0x1083b000
33 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
34 soundcore 9889 2 snd, Live 0x1089b000
35 via_rhine 23497 0 - Live 0x1089f000
36 mii 4673 1 via_rhine, Live 0x10893000
37 floppy 58609 0 - Live 0x108a9000
38 ext3 116809 1 - Live 0x10875000
39 jbd 74969 1 ext3, Live 0x10861000

lsmod命令显示结果如下:

 1 [root@localhost /]# lsmod
 2 Module                Size   Used by
 3 md5                   4033   1
 4 ipv6                232577   8
 5 parport_pc          24705   1
 6 lp                   11565   0
 7 parport             41737   2 parport_pc,lp
 8 autofs4             24005   0
 9 i2c_dev             10433   0
10 i2c_core             22081   1 i2c_dev
11 sunrpc             160421   1
12 ipt_REJECT              6465   1
13 ipt_state             1857   5
14 ip_conntrack           40693   1 ipt_state
15 iptable_filter       2753   1
16 ip_tables              16193   3 ipt_REJECT,ipt_state,iptable_filter
17 dm_mod                 54741   0
18 button                6481   0
19 battery                 8517   0
20 ac                   4805   0
21 uhci_hcd             31449   0
22 ehci_hcd             31557   0
23 snd_via82xx          27237   2
24 snd_ac97_codec       64401   1 snd_via82xx
25 snd_pcm_oss          47609   0
26 snd_mixer_oss       17217   2 snd_pcm_oss
27 snd_pcm             97993   2 snd_via82xx,snd_pcm_oss
28 snd_timer              29765   1 snd_pcm
29 snd_page_alloc       9673   2 snd_via82xx,snd_pcm
30 gameport             4801   1 snd_via82xx
31 snd_mpu401_uart       8769   1 snd_via82xx
32 snd_rawmidi          26725   1 snd_mpu401_uart
33 snd_seq_device       8137   1 snd_rawmidi
34 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
35 soundcore             9889   2 snd
36 via_rhine              23497   0
37 mii                   4673   1 via_rhine
38 floppy                 58609   0
39 ext3                116809   1
40 jbd                    74969   1 ext3 

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


/proc/mounts文件

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

示例:

 1 [root@localhost /]# cat /proc/mounts
 2 rootfs / rootfs rw 0 0
 3 /proc /proc proc rw,nodiratime 0 0
 4 none /dev tmpfs rw 0 0
 5 /dev/root / ext3 rw 0 0
 6 none /dev tmpfs rw 0 0
 7 none /selinux selinuxfs rw 0 0
 8 /proc /proc proc rw,nodiratime 0 0
 9 /proc/bus/usb /proc/bus/usb usbfs rw 0 0
10 /sys /sys sysfs rw 0 0
11 none /dev/pts devpts rw 0 0
12 none /dev/shm tmpfs rw 0 0
13 none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
14 sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0

 

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


/proc/pci文件

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

示例:

 1 [root@localhost /]# cat /proc/pci
 2 PCI devices found:
 3    Bus   0, device 0, function   0:
 4 Class 0600: PCI device 1106:3116 (rev 0).
 5    Master Capable.   Latency=8.
 6    Prefetchable 32 bit memory at 0xe0000000 [0xe7ffffff].
 7    Bus   0, device 1, function   0:
 8 Class 0604: PCI device 1106:b091 (rev 0).
 9    Master Capable.   No bursts.   Min Gnt=12.
10    Bus   0, device   16, function   2:
11 Class 0c03: PCI device 1106:3038 (rev 12.
12    IRQ 5.
13    Master Capable.   Latency=32.
14    I/O at 0xec00 [0xec1f].
15    Bus   0, device   16, function   1:
16 Class 0c03: PCI device 1106:3038 (rev 12.
17    IRQ 3.
18    Master Capable.   Latency=32.
19    I/O at 0xe800 [0xe81f].
20    Bus   0, device   16, function   0:
21 Class 0c03: PCI device 1106:3038 (rev 12.
22 
23 
24    IRQ 11.
25    Master Capable.   Latency=32.
26    I/O at 0xe400 [0xe41f].
27    Bus   0, device   16, function   3:
28 Class 0c03: PCI device 1106:3104 (rev 130).
29    IRQ 10.
30    Master Capable.   Latency=32.
31    Non-prefetchable 32 bit memory at 0xdfffff00 [0xdfffffff].
32    Bus   0, device   17, function   0:
33 Class 0601: PCI device 1106:3177 (rev 0).
34    Bus   0, device   17, function   1:
35 Class 0101: PCI device 1106:0571 (rev 6).
36    IRQ 255.
37    Master Capable.   Latency=32.
38    I/O at 0xfc00 [0xfc0f].
39    Bus   0, device   17, function   5:
40 Class 0401: PCI device 1106:3059 (rev 80).
41    IRQ 5.
42    I/O at 0xe000 [0xe0ff].
43    Bus   0, device   18, function   0:
44 Class 0200: PCI device 1106:3065 (rev 116).
45    IRQ 11.
46    Master Capable.   Latency=32.   Min Gnt=3.Max Lat=8.
47    I/O at 0xdc00 [0xdcff].
48    Non-prefetchable 32 bit memory at 0xdffffe00 [0xdffffeff].
49    Bus   1, device 0, function   0:
50 Class 0300: PCI device 5333:8d04 (rev 0).
51    IRQ 11.
52    Master Capable.   Latency=32.   Min Gnt=4.Max Lat=255.
53    Non-prefetchable 32 bit memory at 0xdfe80000 [0xdfefffff].
54    Prefetchable 32 bit memory at 0xd0000000 [0xd7ffffff]. 

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

/proc/stat文件

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

示例:

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

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


/proc/uptime文件

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

示例:

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


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


/proc/version文件

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

示例:

1 [root@localhost /]# cat /proc/version
2 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

proc/net子目录

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

示例:

 1 [root@localhost /]# ls /proc/net
 2 anycast6    ip_conntrack       mcfilter6   rt6_stats     tcp
 3 arp          ip_conntrack_expect   netlink rt_acct    tcp6
 4 dev          ip_mr_cache       netstat rt_cache    udp
 5 dev_mcast    ip_mr_vif          packet     snmp       udp6
 6 dev_snmp6    ip_tables_matches psched     snmp6       unix
 7 if_inet6    ip_tables_names    raw        sockstat    wireless
 8 igmp           ip_tables_targets raw6    sockstat6
 9 igmp6       ipv6_route           route    softnet_stat
10 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域套接口的套接口表
--------------------------------------------------------------------------------


示例:

1 [root@localhost /]# cat /proc/net/route
2 Iface Destination     Gateway       Flags RefCnt   Use     Metric   Mask MTU    Window   IRTT
3 eth0 0035C2DA        00000000        0001 0    0    0    80FFFFF0
4 eth0 0000FEA9        00000000        0001 0    0    0    0000FFF0
5 eth0 00000000        0135C2DA        0003 0    0    0    00000000 

 

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

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

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


/proc/scsi子目录

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

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


/proc/sys子目录

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

 1 [root@localhost /]# ls /proc/sys
 2 debug   dev   fs   kernel   net   proc   sunrpc   vm
 3 --------------------------------------------------------------------------------
 4 [root@localhost ~]# ls /proc/sys/fs
 5 aio-max-nr dentry-state    file-nr    lease-break-time   overflowgid
 6 aio-nr    dir-notify-enable   inode-nr     leases-enable     overflowuid
 7 binfmt_misc   file-max           inode-state   mqueue          quota
 8 --------------------------------------------------------------------------------
 9 [root@localhost ~]# ls /proc/sys/kernel
10 acct                hotplug    panic                sem
11 cad_pid             modprobe     panic_on_oops           shmall
12 cap-bound              msgmax    pid_max                 shmmax
13 core_pattern           msgmnb    print-fatal-signals     shmmni
14 core_uses_pid       msgmni    printk                sysrq
15 ctrl-alt-del           ngroups_max   printk_ratelimit        tainted
16 domainname          osrelease printk_ratelimit_burst   threads-max
17 exec-shield          ostype    pty                   vdso
18 exec-shield-randomize   overflowgid   random                version
19 hostname             overflowuid   real-root-dev
20 --------------------------------------------------------------------------------
21 [root@localhost ~]# ls /proc/sys/net
22 core   ethernet   ipv4   ipv6   unix
23 --------------------------------------------------------------------------------
24 
25 [root@localhost sys]# ls /proc/sys/vm
26 block_dump                 laptop_mode          nr_pdflush_threads
27 dirty_background_ratio     legacy_va_layout    overcommit_memory
28 dirty_expire_centisecs     lower_zone_protection   overcommit_ratio
29 dirty_ratio             max_map_count       page-cluster
30 dirty_writeback_centisecs   min_free_kbytes        swappiness
31 hugetlb_shm_group       nr_hugepages           vfs_cache_pressure
32 --------------------------------------------------------------------------------
33 
34 [root@localhost sys]# ls /proc/sys/net/ipv4
35 conf                            tcp_fack
36 icmp_echo_ignore_all             tcp_fin_timeout
37 icmp_echo_ignore_broadcasts        tcp_frto
38 icmp_ignore_bogus_error_responses   tcp_keepalive_intvl
39 icmp_ratelimit                   tcp_keepalive_probes
40 icmp_ratemask                   tcp_keepalive_time
41 igmp_max_memberships             tcp_low_latency
42 igmp_max_msf                       tcp_max_orphans
43 inet_peer_gc_maxtime             tcp_max_syn_backlog
44 inet_peer_gc_mintime             tcp_max_tw_buckets
45 inet_peer_maxttl                tcp_mem
46 inet_peer_minttl                tcp_moderate_rcvbuf
47 inet_peer_threshold             tcp_no_metrics_save
48 ip_autoconfig                   tcp_orphan_retries
49 ip_conntrack_max                tcp_reordering
50 ip_default_ttl                   tcp_retrans_collapse
51 ip_dynaddr                      tcp_retries1
52 ip_forward                      tcp_retries2
53 ipfrag_high_thresh                 tcp_rfc1337
54 ipfrag_low_thresh                tcp_rmem
55 ipfrag_secret_interval          tcp_sack
56 ipfrag_time                      tcp_stdurg
57 ip_local_port_range             tcp_synack_retries
58 ip_nonlocal_bind                tcp_syncookies
59 ip_no_pmtu_disc                    tcp_syn_retries
60 neigh                            tcp_timestamps
61 netfilter                          tcp_tso_win_divisor
62 route                            tcp_tw_recycle
63 tcp_abort_on_overflow              tcp_tw_reuse
64 tcp_adv_win_scale                tcp_vegas_alpha
65 tcp_app_win                      tcp_vegas_beta
66 tcp_bic                         tcp_vegas_cong_avoid
67 tcp_bic_fast_convergence           tcp_vegas_gamma
68 tcp_bic_low_window                 tcp_westwood
69 tcp_dsack                          tcp_window_scaling
70 tcp_ecn                         tcp_wmem
71 --------------------------------------------------------------------------------
72 
73 [root@localhost sys]# cat /proc/sys/kernel/shmall
74 2097152
75 --------------------------------------------------------------------------------
76 [root@localhost sys]# cat /proc/sys/kernel/osrelease
77 2.6.9-1.667

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


总结:/proc文件系统包含了大量的有关当前系统状态的信息。proc的手册页中也有对这些文件的解释文档。把文件和分析这些文件的工具产生的输出进行比较能够更加清晰地了解这些文件。

 

posted on 2015-09-30 11:18  三渔  阅读(4837)  评论(0编辑  收藏  举报