Devices
為什麼UNIX系統需要這麼多0-由_t_0−b是噸和0-byte驅動器位於 /dev/*
所以我最近問了這個問題,這導致我執行這個命令:
$ du -sk /dev/*
輸出大約 353 個不同的條目,如下所示:
0 /dev/sdt 0 /開發/標準錯誤 0/開發/標準輸入 0 /開發/標準輸出 0 /開發/系統跟踪 0 /dev/tty 0 /dev/tty.Bluetooth-Incoming-Port 0 /dev/tty.Bluetooth-Modem 0 /dev/ttyp0 0 /dev/ttyp1
有人可以詳細說明這些目錄是什麼嗎?為什麼它們都是零字節?
它們是設備節點:
在類 Unix 作業系統中,設備文件或特殊文件是設備驅動程序的介面,它出現在文件系統中,就好像它是普通文件一樣。
$$ … $$它們允許軟體使用標準輸入/輸出系統呼叫與設備驅動程序互動,這簡化了許多任務並統一了使用者空間 I/O 機制。
換句話說,它們不是普通文件,儘管它們可能被組織到正常目錄中。從歷史上看,這些是在磁碟上創建的實際節點,其中包含一些核心資訊。在當代 linux 系統上,這已被一個特殊的記憶體文件系統devtmpfs取代,就像
/proc
記憶體中的 procfs 和/sys
記憶體中的 sysfs 一樣。這就是為什麼它們被列為具有 0 字節的原因——它們是與核心的直接介面。至於它們都是什麼,在那篇維基百科文章中有一個關於“命名約定”的部分,儘管這不是綁定或通用的(它們可以從使用者空間重命名,例如,RedHat/Fedora 派生的 udev 安裝會這樣做)。您可以從主要/次要數字中獲得另外一些線索,顯示在日期左側的兩列中
ls -l
(其中“大小”將是)。這些數字對應於/sys/dev/block
或中的條目/sys/dev/char
。請記住,這些設備中的大多數都是虛擬的,可能與硬體的任何特定部分幾乎沒有關係。例如,
tty
設備是您可以使用 ctrl-alt-F 導航的虛擬終端$$ N $$;
pt
設備(它們有一個目錄)是 GUI 模擬器中使用的偽終端。還有其他各種更深奧的東西,例如共享記憶體段(在shm
- 這些有實際大小的情況下)。同樣,目的只是為了允許一個標準化的核心介面;“設備”的概念非常鬆散。