上位机知识篇---Linux特殊功能文件


文章目录


前言

在Linux系统中,特殊功能文件 (也称为设备文件或特殊文件 )是用于与硬件设备或内核功能交互 的文件。这些文件通常位于**/dev目录下**,是Linux设备驱动程序的接口 。通过读写这些文件,用户程序可以与硬件设备 (如硬盘、键盘、鼠标等)或内核功能(如随机数生成器、空设备等)进行交互。


特殊功能文件的分类

特殊功能文件分为两类:

块设备文件

块设备文件:用于访问块设备(如硬盘、SSD ),数据以块为单位读写。

字符设备文件

字符设备文件:用于访问字符设备(如键盘、鼠标) ,数据以字符为单位读写。

此外,还有一些特殊的虚拟设备文件 ,用于实现特定的功能(如/dev/null、/dev/zero等)。

1. 块设备文件

块设备文件用于访问块设备 ,数据以固定大小的块为单位进行读写 。常见的块设备包括硬盘、SSD、U盘等。

特点

  1. 数据以块为单位传输(通常为512字节或更大)。
  2. 支持随机访问(可以直接跳转到任意位置读写数据)。
  3. 通常用于存储设备。

示例

/dev/sda:第一个硬盘。

/dev/sdb1:第二个硬盘的第一个分区。

/dev/nvme0n1:NVMe SSD的第一个命名空间。

使用场景

挂载文件系统

bash 复制代码
sudo mount /dev/sdb1 /mnt/mydisk

备份磁盘数据

bash 复制代码
dd if=/dev/sda of=/backup/sda.img

2. 字符设备文件

字符设备文件用于访问字符设备 ,数据以字符为单位进行读写 。常见的字符设备包括键盘、鼠标、串口等。

特点

  1. 数据以字符为单位传输(通常是逐字节)。
  2. 通常用于流式设备(如终端、打印机)。
  3. 不支持随机访问(数据通常是顺序读写的)。

示例

/dev/tty:当前终端。

/dev/input/mouse0:鼠标设备。

/dev/urandom:随机数生成器。

使用场景

读取随机数

bash 复制代码
head -c 16 /dev/urandom | base64

调试串口设备

bash 复制代码
cat /dev/ttyS0

3. 常见的特殊功能文件

以下是一些常见的特殊功能文件及其用途:

3.1./dev/null

用途

用途:空设备,写入的数据会被丢弃 ,读取时立即返回EOF(文件结束符)。

丢弃输出

bash 复制代码
echo "Hello" > /dev/null

清空文件

bash 复制代码
cat /dev/null > myfile.txt

3.2 /dev/zero

用途

用途:零设备,读取时返回无限的空字符(ASCII码为0的字符)。

创建空文件

bash 复制代码
dd if=/dev/zero of=emptyfile bs=1M count=100

初始化磁盘

bash 复制代码
dd if=/dev/zero of=/dev/sdb bs=1M

3.3 /dev/random 和 /dev/urandom

用途

用途:随机数生成器。

/dev/random:使用系统熵池 生成高质量随机数,可能会阻塞直到收集到足够的熵 。

/dev/urandom:生成伪随机数,不会阻塞。

生成随机密码

bash 复制代码
head -c 16 /dev/urandom | base64

加密密钥生成

bash 复制代码
dd if=/dev/random of=keyfile bs=32 count=1

3.4 /dev/full

用途

用途:总满设备,写入时总是返回磁盘已满错误 (ENOSPC),读取时返回无限的空字符。

测试程序对磁盘已满情况的处理

bash 复制代码
echo "Test" > /dev/full

3.5 /dev/loop

用途

用途:回环设备,用于将文件作为块设备挂载。

挂载ISO文件

bash 复制代码
sudo mount -o loop image.iso /mnt/iso

3.6 /dev/tty

用途

用途:当前终端设备。

向当前终端输出信息

bash 复制代码
echo "Hello" > /dev/tty

3.7 /dev/pts

用途

用途:伪终端设备 ,用于远程登录(如SSH)或终端模拟器。

查看当前伪终端

bash 复制代码
tty

3.8 /dev/shm

用途

用途:共享内存设备,基于内存的临时文件系统。

创建临时文件

bash 复制代码
echo "Hello" > /dev/shm/tempfile

4. 创建特殊功能文件

可以使用mknod命令创建特殊功能文件。

语法

mknod <文件名> <类型> <主设备号> <次设备号>

类型:

b:块设备。

c:字符设备。

主设备号:标识设备类型 。

次设备号:标识具体设备。

示例

创建一个字符设备文件:

bash 复制代码
sudo mknod /dev/mydevice c 200 0

5. 查看设备信息

可以使用以下命令查看设备信息:

ls -l /dev:查看设备文件的类型和权限 。

lsblk:查看块设备信息。

dmesg:查看内核日志,获取设备加载信息。

cat /proc/devices:查看已注册的设备及其主设备号。

6. 总结

Linux中的特殊功能文件 是操作系统与硬件设备或内核功能交互的桥梁 。通过块设备文件和字符设备文件,用户程序可以访问硬件设备;通过虚拟设备文件(如/dev/null、/dev/zero等),可以实现特定的功能(如丢弃输出、生成随机数等)。理解这些文件的用途和使用方法,有助于更好地管理和调试Linux系统。


相关推荐
jaronho5 小时前
【脚本】 【Linux】启动所有网卡
linux·运维·服务器
草莓熊Lotso5 小时前
【C++ 基于微服务的即时通讯系统】基建三件套:gflags + gtest + spdlog 源码编译安装与实战入门
linux·网络·数据库·c++·微服务·log4j
JavaPub-rodert5 小时前
服务器不能访问 Docker Hub,镜像怎么搬过去?讲透 docker save、load、export、import 与离线镜像分发
运维·服务器·docker
H.莓飛5 小时前
【C++】类与对象(末):static、友元与拷贝优化
linux·开发语言·c++·visual studio
EasyGBS13 小时前
摄像头还在线,画面已经不能用了?国标GB28181视频平台EasyGBS视频质量诊断怎么用
服务器·安全·音视频
程序员-Benothing14 小时前
Vim编辑器从入门到精通:模式、快捷键、配置、插件
linux·运维·服务器
m0_6464299714 小时前
Docker 完整核心知识点总结(超通俗易懂版)
运维·docker·容器
wdfk_prog14 小时前
LWIP教程 09:从 `tcp_slowtmr()` 到 Fast Retransmit——TCP 超时重传与重复 ACK
服务器·网络·数据库·网络协议·tcp/ip
‎ദ്ദിᵔ.˛.ᵔ₎14 小时前
linux 进程信号 (上)
linux·服务器