在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/1。 43 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驱动器等等。
--------------------------------------------------------------------------------
/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的手册页中也有对这些文件的解释文档。把文件和分析这些文件的工具产生的输出进行比较能够更加清晰地了解这些文件。