Linux一切接文件,除了普通文件和目录文件,还包括一些其它的特殊文件:块设备文件、字符设备文件、套接字文件、链接文件等。今天这里主要说一下常见的块设备文件和字符设备文件,这2类是最常见的设备文件类。
设备常见有鼠标、键盘、显示器、硬盘等等。其中硬盘是块设备,鼠标、键盘、终端等是属于字符设备。这些设备在linux中也是以文件形式存在,存在于目录/dev/中,这些设备文件不占磁盘块空间,只用一个inode来表示即可,主要记录设备文件的一些信息,包括主设备号和次设备号等信息。主设备号指的是设备主类型,比如是硬盘还是串口,标示一类设备,这些设备用一个驱动程序就行;次设备号标示同类设备中的不同设备个体,比如有3个串口,每个串口的主设备号一样,此设备号分别不同用于区分不同的串口。
一、字符设备文件
举例说明,例如终端。
linux有终端的概念,其实就可以简单理解为显示器,当然这样理解有些不准确。如果连接的是真实的显示器,就是物理终端,设备文件名称就为tty*;如果用远程ssh工具连接过来的终端被称为虚拟终端,设备文件名为pts*。
物理终端设备文件名称:
[root@iNeedle~]# ls /dev/tty*
/dev/tty/dev/tty12/dev/tty17/dev/tty21/dev/tty26/dev/tty30/dev/tty35/dev/tty4/dev/tty44/dev/tty49/dev/tty53/dev/tty58/dev/tty62/dev/ttyS0
/dev/tty0/dev/tty13/dev/tty18/dev/tty22/dev/tty27/dev/tty31/dev/tty36/dev/tty40/dev/tty45/dev/tty5/dev/tty54/dev/tty59/dev/tty63/dev/ttyS1
/dev/tty1/dev/tty14/dev/tty19/dev/tty23/dev/tty28/dev/tty32/dev/tty37/dev/tty41/dev/tty46/dev/tty50/dev/tty55/dev/tty6/dev/tty7/dev/ttyS2
/dev/tty10/dev/tty15/dev/tty2/dev/tty24/dev/tty29/dev/tty33/dev/tty38/dev/tty42/dev/tty47/dev/tty51/dev/tty56/dev/tty60/dev/tty8/dev/ttyS3
/dev/tty11/dev/tty16/dev/tty20/dev/tty25/dev/tty3/dev/tty34/dev/tty39/dev/tty43/dev/tty48/dev/tty52/dev/tty57/dev/tty61/dev/tty9
虚拟终端设备文件名称:
[root@iNeedle~]# ls /dev/pts*
01ptmx
查看当前有哪些终端在登陆可以使用以下命令:
[root@iNeedle~]# who
roottty12015-12-0106:48
rootpts/02015-12-0217:49(172.16.1.20)
rootpts/12015-12-0306:20(222.128.159.250)
查看当前我正在使用的终端:
[root@iNeedle~]# who am i
rootpts/12015-12-0306:20(222.128.159.250)
简单测试举例,向终端发消息:
[root@iNeedle~]# echo "Hello World" > /dev/pts/1
HelloWorld
这一块的知识点感觉比较少,只需要简单了解即可。如果后续有内容再补充吧。
二、块设备文件
举例说明,典型的是硬盘。硬盘是我们最常用的设备之一,也是计算机必备的物理设备,主要作用是存储数据。在linux系统看来硬盘也是个设备,块设备,块设备读取不同于字符设备,它可以随机访问非连续的数据块,不像字符设备是字符流的形式,只能连续读取和写入。
硬盘在linux中的存储设备文件查看:
[root@iNeedle~]# ls /dev/sd*
/dev/sda/dev/sda1/dev/sda2
sda表示第一块硬盘,sda1表示第一块硬盘的第一个分区,sda2表示第一块硬盘的第二个分区。如果有第二个硬盘的话,名称为sdb,第二块硬盘的第一个分区为sdb1,依次类推。
其实也可以像刚才那样向硬盘中写入数据,但是这种方式非常规写法,对硬盘数据造成不可预料的破坏,这类操作只可在虚拟机上做实验,切不可在物理机上,否则系统在下次重启的时候就启动不了了。
[root@iNeedle~]# ls /dev/sd*
/dev/sda/dev/sda1/dev/sda2
这样做相当于把把这些信息填充到了sda硬盘的MBR中,如果下次启动系统就会找不到MBR信息,导致系统启动不了,所以说最好在虚拟机上做,然后恢复快照就行了。可以看出如果想毁掉一个系统是多么的简单,只需要执行这个命令,系统就再也起不了了,除非你有MBR数据的备份,这也在提示我们在真实的物理服务器上要最好MBR的备份,防止被破坏。