Linux mknod
命令介绍
mknod
是 "make node" 的缩写,用于创建字符型或块型设备文件。这些文件位于/dev目录下,允许程序通过标准的文件I/O系统调用来与硬件设备进行交互。mknod
还可以创建FIFO,这是一种特殊类型的文件,用作进程间通信。
Linux mknod
命令适用的Linux版本
mknod
命令在大多数Linux发行版中都是可用的,包括Ubuntu, Debian, Fedora, CentOS等。但在某些发行版,如CentOS 7和CentOS 8中,创建设备文件通常需要具有root权限。
对于没有预装 mknod
的系统:
- CentOS 7 使用
yum
安装:[linux@bashcommandnotfound.cn ~]$ sudo yum install util-linux ```
- CentOS 8 使用
dnf
安装:[linux@bashcommandnotfound.cn ~]$ sudo dnf install util-linux ```
Linux mknod
命令的基本语法
基本语法如下:
mknod [选项]... 名称 类型 主设备号 次设备号
其中,类型可以是 b
(块设备), c
或 u
(字符设备), p
(FIFO)。
Linux mknod
命令的常用选项或参数说明
选项 | 说明 |
---|---|
-m | 设置文件模式(权限) |
-Z | 设置安全上下文 |
Linux mknod
命令的实例
实例1:创建一个块设备文件
创建一个块设备文件通常用于存储设备。
[linux@bashcommandnotfound.cn ~]$ mknod /dev/myblock b 7 0
实例2:创建一个字符设备文件
字符设备文件通常用于串口和其他字符型硬件。
[linux@bashcommandnotfound.cn ~]$ mknod /dev/mychar c 5 1
实例3:创建一个带有特定权限的设备文件
使用 -m
选项来设置文件权限。
[linux@bashcommandnotfound.cn ~]$ mknod -m 666 /dev/mychar c 5 1
实例4:创建一个FIFO文件
FIFO用于进程间通信。
[linux@bashcommandnotfound.cn ~]$ mknod /dev/myfifo p
实例5:为串口设备创建字符设备文件
例如,如果要为第一个串口(通常是 /dev/ttyS0
)创建设备文件:
[linux@bashcommandnotfound.cn ~]$ mknod /dev/ttyS0 c 4 64
实例6:使用预定义的设备号创建块设备
如果你知道设备的主设备号和次设备号,可以直接指定。假设为一个SCSI磁盘创建设备文件:
[linux@bashcommandnotfound.cn ~]$ mknod /dev/sdb b 8 16
实例7:创建一个带有特定安全上下文的设备文件
使用 -Z
选项来创建一个具有特定SELinux安全上下文的设备文件:
[linux@bashcommandnotfound.cn ~]$ mknod -Z system_u:object_r:device_t:s0 /dev/mychar c 5 1
实例8:创建一个循环设备文件
循环设备通常用于将文件作为块设备挂载:
[linux@bashcommandnotfound.cn ~]$ mknod /dev/loop0 b 7 0
实例9:设置创建文件的默认权限
结合 umask
命令,在创建设备文件时设置默认权限:
[linux@bashcommandnotfound.cn ~]$ umask 022
[linux@bashcommandnotfound.cn ~]$ mknod /dev/example c 5 1
实例10:为网络接口创建字符设备文件
可以为网络接口创建一个字符设备文件,例如为 tun0
:
[linux@bashcommandnotfound.cn ~]$ mknod /dev/net/tun c 10 200
实例11:使用脚本创建多个设备文件
如果需要创建多个设备文件,可以编写一个脚本来简化这个过程。例如,下面的脚本创建了多个循环设备:
for i in {0..7}
do
mknod /dev/loop$i b 7 $i
done
实例12:删除并重新创建设备文件
如果设备文件损坏或不正确,您可能需要删除并重新创建它。请谨慎使用以下命令以避免系统不稳定:
[linux@bashcommandnotfound.cn ~]$ rm /dev/ttyS0
[linux@bashcommandnotfound.cn ~]$ mknod /dev/ttyS0 c 4 64
实例13:创建自定义设备文件用于测试
开发人员有时需要创建自定义设备文件以进行测试:
[linux@bashcommandnotfound.cn ~]$ mknod /dev/mytestdevice b 250 0
Linux mknod
命令的注意事项
- 使用
mknod
创建设备文件时,必须具有root权限。 - 正确设置主设备号和次设备号,否则设备文件可能无法正确访问硬件。
- bash:
mknod
: command not found - 如果遇到此错误,请根据上述安装步骤进行安装。
评论区