Linux /dev目录详解

文章摘抄 http://www.51testing.com/html/38/225738-235345.html

 

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

 

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

 

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

 

设备文件分为两种:

1、块设备文件(b)

2、字符设备文件(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/console:控制台和/dev/tty[0-63]

 

/dev/null 代表空洞文件

不显示任何输出

[root@eccs_web_bak for]# cat /etc/passwd > /dev/null
[root@eccs_web_bak for]#

  

清除文件内容

[root@eccs_web fileinput]# cat test9
this is an error
[root@eccs_web fileinput]# cat /dev/null > test9
[root@eccs_web fileinput]# cat test9

备注:/dev/null文件不包含任何内容,程序员经常使用它快速将数据从现有文件移除,无需移除文件再重新创建它

 

 

/dev/tty 代表终端设备

将键盘输入值赋值给变量aaa

[root@eccs_web_bak for]# read aaa < /dev/tty
sss
[root@eccs_web_bak for]# echo $aaa
sss

 

虚拟终端的区别与联系?

    控制抬就好比电视机上的按钮,终端好比遥控板,他们的目的都是控制电视机,但是控制台必须在本地,而终端可以在远端,系统只有一个控制台,叫console,其他的都是终端

 

 

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

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

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

 

例子:系统自动获取网卡的mac地址

/etc/udev/rules.d/70-persistent-net.rules文件会自动获取网卡的mac地址

[root@freeswitch ~]# cd /etc/udev/rules.d/
[root@freeswitch rules.d]# ls
60-fprint-autosuspend.rules  70-persistent-cd.rules   90-hal.rules
60-pcmcia.rules              70-persistent-net.rules  98-kexec.rules
60-raw.rules                 90-alsa.rules
[root@freeswitch rules.d]# cat 70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:56:b6:14:3c", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

 

猜你喜欢

转载自hbiao68.iteye.com/blog/2041081