# 设备
# /dev
Linux 中,所有设备都以文件的形式映射到 /dev 目录下。例如:
/dev/hd[a-d]
:IDE 接口的设备(主要是硬盘)。- IDE 接口是一种传统的并行接口,传输速度较慢,已被淘汰。
- 例如 /dev/hda 表示硬盘 a 。编号 a 说明它是系统启动后识别到的第一个这种类型的设备。
/dev/sd[a-p]
:SATA 接口的设备(主要是硬盘)、SCSI 接口的设备(主要是硬盘)、USB 接口的设备。/dev/vd[a-]
:虚拟磁盘。/dev/fd[0-1]
:软盘。/dev/cdrom
:光驱。/dev/mouse
:鼠标。/dev/lp[0-15]
:打印机。
# 块、字符设备
将设备文件按读写单位分类:
- 块设备(block deivce)
- :读写时以块为单位,有缓冲。比如磁盘。
- 块设备一般被格式化成某种文件系统,供用户读写。
- 字符设备(character device)
- :读写时以字符为单位,无缓冲,因此读写延迟低。比如键盘。
- 用户不能通过文件系统读写字符设备,而要通过某些程序直接通信。
- 没有格式化的设备称为裸设备,不能通过文件系统访问,只能当作字符设备直接访问。
# 终端设备
- Linux 中,与终端交互时,都是通过读写 /dev 目录下的串口设备文件。
- 它们可能是真实存在的硬件设备,也可能是虚拟设备。
主要分类:
- 控制台设备(console device)
- :文件名为
/dev/console
,用于接收系统内核的一些输出信息,只有 root 用户能读写。
- :文件名为
- 虚拟控制台(virtual console)
- :文件名的正则表达式为
/dev/tty\d*
。 /dev/tty
指向当前 shell 使用的终端,比如 /dev/tty1、/dev/pts/0 。/dev/tty0
指向当前 shell 使用的虚拟控制台,只有 root 用户能读写。
- :文件名的正则表达式为
- 伪终端(pseudo terminals ,ptys)
- :用于模拟终端操作的进程。比如在桌面上打开的终端、通过 SSH 登录的终端。
- 文件名的正则表达式为
/dev/pts/\d+
。 - 例如,假设通过 SSH 登录。执行 w 命令,查询到当前终端为 pts/0 。然后执行以下命令:
[[email protected] ~]#echo Hello > /dev/stdout # 将输出重定向到 stdout ,这会输出到当前终端 Hello [[email protected] ~]#echo Hello > /dev/tty # 将输出重定向到当前终端 Hello [[email protected] ~]#echo Hello > /dev/tty1 [[email protected] ~]#echo Hello > /dev/pts/0 Hello [[email protected] ~]#echo Hello > /dev/pts/6 # 该伪终端不存在,因此不允许重定向 -bash: /dev/pts/6: Permission denied
- 通过 SSH 登录时,用户输入的 stdin 数据会先被通过 sshd 服务传给远程主机上的 shell 进程,再写入 /dev/tty 文件,最后被系统内核读取、处理。
- 串行端口终端(serial ports terminal)
- :表示通过计算机串行端口连接的终端设备。
- 文件名的正则表达式为
/dev/ttyS\d+
。 - 例如,执行命令
echo "Hello World" > /dev/ttyS1
,就是将数据发送到 S1 端口,相当于 DOS 系统的 COM1 。
# 相关命令
# lscpu
$ lscpu # 显示 CPU 的信息
# lsmem
$ lsmem # 显示内存的信息
# lsblk
$ lsblk # 显示系统所有的块设备
-p # 显示每个设备的完整路径
-f # 显示每个块设备的文件系统、UUID(通用唯一识别码)
- 例:
[[email protected] ~]# lsblk -p NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT /dev/sr0 11:0 1 3.5M 0 rom /dev/vda 253:0 0 50G 0 disk └─/dev/vda1 253:1 0 50G 0 part /
- /dev/sr0 是 rom ,/dev/vda 是磁盘设备,/dev/vda1 是一个磁盘分区,挂载在/。
- MAJ:MIN :主设备号和次设备号。
- RM :是否为可卸载设备。
- RO :是否为只读设备。
- TYPE :分为磁盘(disk)、分区(partition)、只读存储器(rom)三种。
- MOUTPOINT :挂载点。
# lshw
$ lshw # 显示所有硬件设备的详细信息
-short # 只显示简洁的设备列表
-class cpu # 只显示 cpu 类的信息(同理可显示其它类设备)
-json # 显示成 json 格式
- 安装:
yum install lshw
- 需要用 root 权限执行。