mknod 命令


mknod命令

創建特殊文件。

語法

只能由 root 用戶或系統組成員運行

mknod Name { b | c } Major Minor

創建 FIFO(已命名的管道)

mknod Name { p }

描述

mknod 命令建立一個目錄項和一個特殊文件的對應索引節點。第一個參數是 Name 項設備的名稱。選擇一個描述性的設備名稱。mknod 命令有兩種形式,它們有不同的標志。

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

Mem: 248380 243800 4580 0 2928 53344

-/+ buffers/cache: 187528 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

Mem: 248380 242368 6012 0 5596 55304

-/+ buffers/cache: 181468 66912

Swap: 334616 0 334616

mknod的一個使用案例:

https://www.cnblogs.com/my-show-time/p/15489503.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM