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--:
rootpts/--:(172.16.1.20)
rootpts/--:(222.128.159.250)

查看当前我正在使用的终端:

 [root@iNeedle~]# who am i
rootpts/--:(222.128.159.250)

简单测试举例,向终端发消息:

[root@iNeedle~]# echo "Hello World" > /dev/pts/
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的备份,防止被破坏。

Linux磁盘管理之设备文件详解04的更多相关文章

  1. LINUX用户管理——/etc/passwd文件详解

      输入vi /etc/passwd 可以查看此文件的内容 .本机内容如下: [root@localhost ~]# vi /etc/passwdroot:x:0:0:root:/root:/bin/ ...

  2. Linux中/proc目录下文件详解

    转载于:http://blog.chinaunix.net/uid-10449864-id-2956854.html Linux中/proc目录下文件详解(一)/proc文件系统下的多种文件提供的系统 ...

  3. Linux中/proc目录下文件详解(转贴)

      转载:http://www.sudu.cn/info/index.php?op=article&id=302529   Linux中/proc目录下文件详解(一) 声明:可以自由转载本文, ...

  4. linux yum的配置文件 repo文件详解

    linux yum的配置文件 repo文件详解 什么是repo文件?repo文件是Fedora中yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容,例如我们将从哪 ...

  5. linux环境下/etc/hosts文件详解

    linux环境下/etc/hosts文件详解 就没一个昵称能用关注 0.0632017.09.12 17:04:28字数 623阅读 27,096 介绍 hosts文件是linux系统中负责ip地址与 ...

  6. 手把手教Linux驱动3-之字符设备架构详解,有这篇就够了

    一.Linux设备分类 Linux系统为了管理方便,将设备分成三种基本类型: 字符设备 块设备 网络设备 字符设备: 字符(char)设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程 ...

  7. Linux—账号管理及命令使用详解

    关注微信公众号:CodingTechWork,一起学习进步. 引言   在Linux系统中,我们常常会看到目录或文件的所属关系: [root@linux01 ~]# ll -d test.sh -rw ...

  8. 每天一个linux命令(32)--/etc/group文件详解

    Linux /etc/group 文件与 /etc/passwd 和/etc/shadow 文件都是有关于系统管理员对用户和用户组管理时相关的文件.Linux /etc/group 文件是有关于系统管 ...

  9. Linux日志管理高级进阶:实例详解syslog

    syslog已被许多日志函数采纳,它用在许多保护措施中,任何程序都可以通过syslog记录事件.syslog可以记录系统事件,可以写到一个文件或设备中,或给用户发送一个信息.它能记录本地事件或通过网络 ...

随机推荐

  1. GJM : 进程、线程和协程的理解

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  2. C#之第五单元的项目打印购物单

    人生的坚持,学习的坚持,尽管遭遇困苦,但是我们却能在一次次的苦难中成长,重新爬起来.这就是奋斗的人生.就是挥洒自己青春,汗水的有意义,有价值的生活.而,我虽然在平凡的人群中不起眼,可是每个人却闪耀着自 ...

  3. pymysql 操作数据库

    一.简介 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同,但目前pymysql支持python3.x而后者不支持3.x版本 其执行语句与sql源码相似 二.使用 ...

  4. css居中完全指南(翻译)

    最近参加了百度的前端技术学院,任务4是要求一个元素在父元素中水平和垂直居中,提供的一篇文章对各种情况都进行了分析,很不错,英文也不是那么难懂,毕竟代码还是主体,翻译过来分享出来,翻译内容带有自己的理解 ...

  5. pqgrid对json数据的绑定

    $(function () { var data = [[1, 'Exxon Mobil', '339,938.0', '36,130.0'], [2, 'Wal-Mart Stores', '315 ...

  6. Troubleshooting FIM: (No Display Name) in FIM Portal

    from: http://social.technet.microsoft.com/wiki/contents/articles/12682.troubleshooting-fim-no-displa ...

  7. Android线程优先级设置方法技巧

    对于Android平台上的线程优先级设置来说可以处理很多并发线程的阻塞问题, 比如很多无关紧要的线程会占用大量的CPU时间,虽然通过了MultiThread来解决慢速I/O但是合理分配优先级对于并发编 ...

  8. IOS 如何隐藏tabbar

    系统自带的UITabBarController有时候到不到要求,需要自定义样式. 有一种方法就是在TabBar上面在放一层自己的,正好把原来的遮住. 那么,从Tab进入子的Controller想要隐藏 ...

  9. 实现BaseFragment

    package liu.basedemo.base; import android.app.Activity; import android.content.Intent; import androi ...

  10. iOS开发之 用第三方类库实现轮播图

    在github上面有很多的第三方类库,大大节约了大家的开发时间 下载地址:https://github.com/gsdios/SDCycleScrollView 现已支持cocoapods导入:pod ...