Linux磁盘管理之设备文件详解04
2015-12-02 00:00
381 查看
Linux一切接文件,除了普通文件和目录文件,还包括一些其它的特殊文件:块设备文件、字符设备文件、套接字文件、链接文件等。今天这里主要说一下常见的块设备文件和字符设备文件,这2类是最常见的设备文件类。
设备常见有鼠标、键盘、显示器、硬盘等等。其中硬盘是块设备,鼠标、键盘、终端等是属于字符设备。这些设备在linux中也是以文件形式存在,存在于目录/dev/中,这些设备文件不占磁盘块空间,只用一个inode来表示即可,主要记录设备文件的一些信息,包括主设备号和次设备号等信息。主设备号指的是设备主类型,比如是硬盘还是串口,标示一类设备,这些设备用一个驱动程序就行;次设备号标示同类设备中的不同设备个体,比如有3个串口,每个串口的主设备号一样,此设备号分别不同用于区分不同的串口。
一、字符设备文件
举例说明,例如终端。
linux有终端的概念,其实就可以简单理解为显示器,当然这样理解有些不准确。如果连接的是真实的显示器,就是物理终端,设备文件名称就为tty*;如果用远程ssh工具连接过来的终端被称为虚拟终端,设备文件名为pts*。
物理终端设备文件名称:
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
.codearea{ color:black; background-color:white; line-height:18px; border:1px solid #4f81bd; margin:0; width:auto !important; width:100%; overflow:auto; text-align:left; font-size:12px; font-family: "Courier New","Consolas","Fixedsys","BitStream Vera Sans Mono", courier,monospace,serif}
.codearea pre{ color:black; line-height:18px; padding:0 0 0 12px !important; margin:0em; background-color:#fff !important}
.linewrap pre{white-space:pre-wrap; white-space:-moz-pre-wrap; white-space:-pre-wrap; white-space:-o-pre-wrap; word-wrap:break-word; word-break:normal}
.codearea pre.alt{ background-color:#f7f7ff !important}
.codearea .lnum{color:#4f81bd;line-height:18px}
虚拟终端设备文件名称:
[root@iNeedle ~]# ls /dev/pts*
0 1 ptmx
查看当前有哪些终端在登陆可以使用以下命令:
[root@iNeedle ~]# who
root tty1 2015-12-01 06:48
root pts/0 2015-12-02 17:49 (172.16.1.20)
root pts/1 2015-12-03 06:20 (222.128.159.250)
查看当前我正在使用的终端:
[root@iNeedle ~]# who am i
root pts/1 2015-12-03 06:20 (222.128.159.250)
简单测试举例,向终端发消息:
[root@iNeedle ~]# echo "Hello World" > /dev/pts/1
Hello World
这一块的知识点感觉比较少,只需要简单了解即可。如果后续有内容再补充吧。
二、块设备文件
举例说明,典型的是硬盘。硬盘是我们最常用的设备之一,也是计算机必备的物理设备,主要作用是存储数据。在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的备份,防止被破坏。
相关文章推荐
- Linux的slab设计
- 教你读Git——Linux内核版本管理工具
- Linux内核源代码review Case
- Linux内核之——C语言“徒手”写内存!
- Linux内核源代码解析之——欲三次握手,先构造传输控制块!
- 【转】G40-70、G50-70联想小新笔记本SR1000随机Linux改Windows 7系统操作指导
- Linux内核zero-copy小试牛刀(加注释)
- Linux文件所用到的系统调用的函数总结
- linux socket 编程(C语言)--转载
- 软中断网卡处理&Linux高性能外部设备处理机制
- Linux五个查找命令
- linux下virtualbox和wine
- Linux内核网卡收包机制历史变革
- 从linux的findso、finda命令所想到的------所想即所得与所见即所得
- Linux keepalived与lvs的深入分析
- Linux内核的信号机制——怪胎
- Linux下配置文件读取操作流程及其C代码实现
- 我的VPS选择之路
- linux命令复用技巧
- Linux学习笔记(3)之文件操作