Linux /dev 目录详解
在 Linux 下,/dev 目录是很重要的, 各种设备都在下面. 下面简单总结一下:
dev 是设备 (device) 的英文缩写./dev 这个目录对所有的用户都十分重要. 因为在这个目录中包含了所有 Linux 系统中使用的外部设备. 但是这里并不是放的外部设备的驱动程序, 这一点和 Windows,dos 操作系统不一样. 它实际上是一个访问这些外部设备的端口. 我们可以非常方便地去访问这些外部设备, 和访问一个文件, 一个目录没有任何区别.
Linux 沿袭 Unix 的风格, 将所有设备认成是一个文件.
设备文件一般存放在 / 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 项非常相似.
示例:
- [[email protected] proc]# cat cmdline
- ro root=LABEL=/ rhgb quiet
/proc/cpuinfo 文件
这个文件提供了有关系统 CPU 的多种信息. 这些信息是从内核里对 CPU 的测试代码中得到的. 文件列出了 CPU 的普通型号(386,486,586,686 等), 以及能得到的更多特定信息(制造商, 型号和版本). 文件还包含了以 bogomips 表示的处理器速度, 而且如果检测到 CPU 的多种特性或者 bug, 文件还会包含相应的标志. 这个文件的格式为: 文件由多行构成, 每行包括一个域名称, 一个冒号和一个值.
示例:
- [[email protected] 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 文件
这个文件列出字符和块设备的主设备号, 以及分配到这些设备号的设备名称.
示例:
- [[email protected] /]# 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 行所使用; 这一行不能用于其它用途.
示例:
- [[email protected] ~]# cat /proc/dma
- 4: cascade
/proc/filesystems 文件
这个文件列出可供使用的文件系统类型, 一种类型一行. 虽然它们通常是编入内核的文件系统类型, 但该文件还可以包含可加载的内核模块加入的其它文件系统类型.
示例:
- [[email protected] 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 命令手工查看手头的这个文件. 这几个文件列出了当前投入使用的资源(但是不包括那些没有加载驱动程序的硬件所使用的资源).
示例:
- [[email protected] 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 端口范围.
示例:
- [[email protected] 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 分钟里运行队列中的平均任务数得到的. 随后是正在运行的任务数和总任务数. 最后是上次使用的进程号.
示例:
- [[email protected] ~]# cat /proc/loadavg
- 0.11 0.16 0.14 3/126 3912
/proc/locks 文件
这个文件包含在打开的文件上的加锁信息. 文件中的每一行描述了特定文件和文档上的加锁信息以及对文件施加的锁的类型. 内核也可以需要时对文件施加强制性锁.
示例:
- [[email protected] 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
proc/mdstat 文件
这个文件包含了由 md 设备驱动程序控制的 RAID 设备信息.
示例:
- [[email protected] ~]# cat /proc/mdstat
- Personalities :
- unused devices: <none>
/proc/meminfo 文件
这个文件给出了内存状态的信息. 它显示出系统中空闲内存, 已用物理内存和交换内存的总量. 它还显示出内核使用的共享内存和缓冲区总量. 这些信息的格式和 free 命令显示的结果类似.
示例:
- [[email protected] ~]# 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 登记的设备驱动程序.
示例:
- [[email protected] ~]# cat /proc/misc
- 63 device-mapper
- 175 agpgart
- 135 rtc
/proc/modules 文件
这个文件给出可加载内核模块的信息. lsmod 程序用这些信息显示有关模块的名称, 大小, 使用数目方面的信息.
示例:
- [[email protected] /]# 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 0x
来源: http://www.bubuko.com/infodetail-3037566.html