那么mknod
命令,它有什么作用?
/dev/random$ mknod -m 666 random c 1 8
我知道这-m
指定了权限,并且mknod
总体上在文件系统中创建了一个inode
可以是文件、目录、设备、fifo 等的文件……但我真的不明白最后 3 个参数是做什么的。
那么mknod
命令,它有什么作用?
/dev/random$ mknod -m 666 random c 1 8
我知道这-m
指定了权限,并且mknod
总体上在文件系统中创建了一个inode
可以是文件、目录、设备、fifo 等的文件……但我真的不明白最后 3 个参数是做什么的。
最后三个参数是类型、主要、次要。他们确定设备实际代表什么;名称是约定俗成的,但不能确定功能。如果你创建它,
/dev/wubbalubbadubdub
它仍然/dev/random
和类型一样长,major,minor 说它是这样的。类型
c
是字符设备(与块设备相反)。主要/次要数字本质上是幻数。除了参考相关的内核文档之外,没有其他方法可以理解它们。
https://www.kernel.org/doc/Documentation/admin-guide/devices.txt
因此,在您的情况下,您有字符设备,主要 1,次要 8,其记录如下:
这就是它的全部。如果你想
/dev/random
你必须使用c 1 8
. 如果你想要它/dev/urandom
,它就是c 1 9
。这就是它在内核中的历史枚举方式。大多数时候,您只使用内核、devtmpfs、udev 或您的发行版提供的静态/dev 结构提供的设备节点;您很少需要自己创建它们,即使那样也可能有帮助者,因此您不必自己找出正确的幻数。
您也可以使用 mknod 创建 FIFO,但 mkfifo 应该更易于使用。