描述
mknod 命令建立一个目录项和一个特殊档案的对应索引节点。第一个参数是 Name 项设备的名称。选择一个描述性的设备名称。mknod 命令有两种形式,它们有不同的标誌。
基本介绍
- 中文名mknod
- 用途创建特殊档案
- 形式两种形式,它们有不同的标誌
- 语法只能由root用户或系统组成员运行
用途
创建特殊档案。
语法
只能由 root 用户或系统组成员运行
mknod Name { b | c } Major Minor
创建 FIFO(已命名的管道)
mknod Name { p }
描述
mknod 命令的第一种形式只能由 root 用户或系统组成员执行。在第一种形式中,使用了b 或 c 标誌。b 标誌表示这个特殊档案是面向块的设备(磁碟、软碟)。c 标誌表示这个特殊档案是面向字元的设备(磁带,键盘)。
第一种形式的两个参数是指定主设备的数目,它帮助作业系统查找设备驱动程式代码,和指定次设备的数目,也就是单元驱动器或行号,它们是十进制或八进制的。一个设备的主要和次要编号由该设备的配置方法分配,它们保存在 ODM 中的 CuDvDr 类里。在这个对象类中定义了主要和次要编号以确保整个系统设备定义的一致性,这是很重要的。
在 mknod 命令的第二种形式中,使用了 p 标誌来创建 FIFO(已命名的管道)。
标誌
b | 表示特殊档案是面向块的设备(磁碟、软碟或磁带)。 |
c | 表示特殊档案是面向字元的设备(其他设备)。 |
p | 创建 FIFO(已命名的管道)。 |
------------------------------------------------------------------------
c.创建虚拟设备(dev),日誌记录的时候有的选项可能用到它们。在默认情况下,是使用/dev目录下的档案,由于我们需要把DNS限制到一个目录,所以必须完全把/dev下用到的档案(或者说设备)模拟过来才可以。
ls -lL /dev/zero /dev/null /dev/random
看到类似
crw-rw-rw- 1 root root 1, 3 2003-09-15 /dev/null
crw-r--r-- 1 root root 1, 8 2003-09-15 /dev/random
crw-rw-rw- 1 root root 1, 5 2003-09-15 /dev/zero
这样的,将其中的1,3这样的数字记录下来,这表示主设备号和次设备号(主设备号用来区分设备的种类;次设备号则是为了作唯一性区分,标明不同属性——注意,在unix系统中是把设备也当作档案来对待的),在redhat 9下,ls加不加-L参数都无所谓,在Solaris下则一定要加上才可以显示。
mknod dev/null c 1 3
mknod dev/zero c 1 5
mknod dev/random c 1 8
============================================================================
mknod [options] name {bc} major minor
mknod [options] name p
GNU 选项(缩写)
[-m mode] [--help] [--version] [--]
描述
mknod 用指定名称产生一个FIFO(命名管道),字元专用或块专用档案。
档案系统中的一个专用档案存贮着三种信息(布朗型、整型、整型)。布朗型在字元档案与块档案之间作出选择,
两个整型是主、次设备号。
通常,一个专用档案并不在磁碟上占用空间,仅仅是为作业系统提供交流,而不是为数据存贮服务。一般地,专用档案会指向一个硬体设备(如
磁碟、磁带、印表机、虚拟控制台)或者作业系统提供的服务(如/dev/null, /dev/random)。
块档案通常类似于磁碟设备(在数据可以被访问的地方赋予一个块号,意味着设定了一个块快取)。所有其他设备都是字元档案。(以前,两种档案类型间是有差别的。比如字元档案I/O没有快取,而块档案则有。)
mknod命令就是用来产生这种类型档案的。
以下参数指定了所产生档案的类型
p
FIFO型
b
块档案
c
字元档案
GNU版本还允许使用u('unbufferd'非缓冲化),以保持与C语言的一致。
当创建一个块档案或字元档案时,主、次设备号必须在档案类型参数后给出。(十进制或八进制以0开头;GNU 版本还允许使用以0x开头的十六进制)预设地,所产生的档案模式为0666('a+rw')。
选项
-m mode, --mode=mode
为新建立的档案设定模式,就象套用命令chmod一样,以后仍然使用预设模式建立新目录。
GNU 标準选项
--help
在标準输出上显示使用信息并顺利退出。
--version
在标準输出上显示版本信息并顺利退出
--
终端选项列表。
mknod命令详解
mknod [options] name {bc} major minor
mknod [options] name p
GNU 选项(缩写)
[-m mode] [--help] [--version] [--]
描述
mknod 用指定名称产生一个FIFO(命名管道),字元专用或块专用档案。
档案系统中的一个专用档案存贮着三种信息(布尔型、整型、整型)。布尔型在字元档案和块档案之间作出选择,
两个整型是主、次设备号。
通常,一个专用档案并不在磁碟上占用空间,仅仅是为作业系统提供交流,而不是为数据存贮服务。一般地,专用档案会指向一个硬体设备(如
磁碟、磁带、印表机、虚拟控制台)或作业系统提供的服务(如/dev/null, /dev/random)。
块档案通常类似于磁碟设备(在数据能够被访问的地方赋予一个块号,意味着设定了一个块快取)。任何其他设备都是字元档案。(以前,两种文档类型间是有差别的。比如字元文档I/O没有快取,而块文档则有。)
mknod命令就是用来产生这种类型档案的。
以下参数指定了所产生档案的类型
b create a block (buffered) special file
c, u create a character (unbuffered) special file
p create a FIFO
GNU版本还允许使用u('unbufferd'非缓冲化),以保持和C语言的一致。
当创建一个块档案或字元档案时,主、次设备号必须在档案类型参数后给出。但当指定一个p(FIFO)类型时,主次设备号必须省略。(设备号默认是以十进制表示;八进制以0开头;GNU 版本还允许使用以0x开头的十六进制)
选项
-m mode, --mode=mode
为新建立的文档设定模式,就象套用命令chmod相同,以后仍然使用预设模式建立新目录。 预设地,所产生的文档模式为0666('a+rw')
GNU 标準选项
--help
在标準输出上显示使用信息并顺利退出。
--version
在标準输出上显示版本信息并顺利退出
主、次设备号可在核心原始码的./Documentation/devices.txt里查到,mknod 可为这些指定的设备创建节点,节点的位置不是一定要在/dev下,为了便于管理一般都是指定/dev。驱动程式是根据主、次设备号定位的,你的应用程式open一个设备时,一定要是你指定的节点位置。例如
mknod /dev/input/mouse0 c 13 32
也可以
mknod /tmp/mymouse c 13 32
//
下面是某个网友利用mknod成功解决找不到swap分区的问题。
开了一个大程式,用free看看记忆体是用,却显示如下
linuxman:~ # free
total used free shared buffers cached
-/+ buffers/cache: 18 75 28 60852
Swap: 0 0 0
怪了,swap怎幺是零? 用#swapon -a,却说是没有这个档案/dev/hda7!
关于swap,我的fstab档案中有一行是这样的
/dev/hda7 swap swap pri=42 0 0
于是#ls /dev/hda,果然没有hda7这个block设备!那就创建一个!
我就用#mknod /dev/hda7 b 3 7,再chmod 和 chgrp 一下就可以了!
这样#ls /dev/hda7就显示这样了
brw-rw---- 1 root disk 3, 7 2005-04-12 07:00 /dev/hda7
然后再#swapon -a就可以了;#free显示
total used free shared buffers cached
-/+ buffers/cache: 181468 66912
Swap: 334616 0 334616