2.1Linux的 Directory Description目錄描述(總結)

1.Linux的Directory Description目錄描述

binEssential command binaries 所有用戶可用的基本命令的二進制程序
bootStatic files of the boot loader 引導加載器必須用到的靜態文件 ,kernel initramfs(initrd),grub等。
devDevice files 存儲特殊文件或設備文件 設備有兩種類型: 塊設備(隨機設備)、字符設備(線性設備)

  • 硬盤 、硬盤分區、usb閃存盤 /dev/sd[a-p]數字
  • 25針打印機 /dev/lp[0-2]
  • usb接口打印機 /dev/usb/lp[0-15]
  • 軟盤 /dev/fd[0-7]
  • VirtI/O 界面 /dev/vd[a-p]
  • 鼠標 /dev/input/mouse[0-15] (通用)
  • CDROM/DVDROM /dev/scd[0-1]
  • /dev/sr[0-1]
  • /dev/cdrom
  • 磁帶機 /dev/ht0 IDE界面
  • /dev/sr0 SATA/SCSI界面
  • /dev/tape 當前磁帶

etc Host-specific system configuration 系統程序配置文件,不能爲二進制程序
home 普通用戶家目錄的集中位置,一般每個用戶的家目錄默認爲此目錄下與用戶同名的子目錄 , /home/$USER
root Home directory for the root user (optional) 管理員的家目錄,可選。應該使用普通用戶登陸。
lib Essential shared libraries and kernel modules 基本共享庫和內核模塊 爲系統啓動或跟文件系統上的應用程序(/bin,/sbin等)提供共享庫,以及爲內核提供內核模塊

  • libc.so. the dynamically-linked C library 動態鏈接c庫
  • ld the execution time linker/loader 運行時鏈接器、加載器
  • /lib:** 必須有的目錄或軟鏈接, loadable kernal modules 可加載的內核模塊
  • lib64: 64位系統特種的存放64位共享庫的路徑,32位的庫在lib下
    media: Mount point for removeable media 可移動、便攜式設備掛載點
    mnt: Mount point for mounting a filesystem temporarily 其他文件系統的臨時掛載點
    opt: Add-on application software packages 附加應用軟件包的安裝位置,可選
    sbin: Essential system binaries 基本的系統管理二進制程序
    srv: Data for services provided by this system 系統提供的服務的數據

tmp: Temporary files 存儲程序產生的臨時文件的目錄,此目錄所有用戶都能執行寫操作。
usr: Secondary hierarchy usr層級結構 第二重要的文件系統,

  • bin 、sbin
  • lib、 lib64
  • include: c程序頭文件
  • share: 命令手冊頁和自帶文檔等架構特有的文件的存儲位置
  • local: 層級結構
  • X11R6: x窗口系統安裝目錄
  • games:
  • src: 源碼文件的存儲位置
  • local /usr/local local hierarchy 系統管理員安裝應用程序;通常用於安裝第三方程序

var contains variable data files. This includes spool directories and files, administrative and logging data, and transient and temporary files. 存儲時常發生變化的數據

  • cache Application cache datalibVariable state information
  • local Variable data for /usr/local
  • lock Lock files 鎖文件
  • log Log files and directories 日誌文件
  • opt Variable data for /opt
  • run Data relevant to running processes 運行中的
  • spool Application spool data
  • tmp Temporary files preserved between system reboots 重啓後仍要保留的臨時文件

proc基於內存的虛擬文件系統,存儲內核和進程相關文件,多爲內核參數, 例如 net.ipv4.ip_forward,虛擬爲 net/ipv4/ip_forward , 完整路徑爲 /proc/sys/net/ipv4/ip_forward
sys 基於內存的sysfs虛擬文件系統提供了一種比proc 更爲理想的訪問內核數據的途徑,主要作用是管理Linux設備提供一種統一的模型的接口

2 /sys下的子目錄 所包含的內容

devices 這是內核對系統中所有設備的分層次表達模型,也是 /sys 文件系統管理設備的最重要的目錄結構,下文會對它的內部結構作進一步分析;
dev 這個目錄下維護一個按字符設備和塊設備的主次號碼(major:minor)鏈接到真實的設備(/sys/devices下)的符號鏈接文件,它是在內核 2.6.26 首次引入;
bus 這是內核設備按總線類型分層放置的目錄結構, devices 中的所有設備都是連接於某種總線之下,在這裏的每一種具體總線之下可以找到每一個具體設備的符號鏈接,它也是構成 Linux 統一設備模型的一部分;
class 這是按照設備功能分類的設備模型,如系統所有輸入設備都會出現在 /sys/class/input 之下,而不論它們是以何種總線連接到系統。它也是構成 Linux 統一設備模型的一部分;
block 這裏是系統中當前所有的塊設備所在,按照功能來說放置在 /sys/class 之下會更合適,但只是由於歷史遺留因素而一直存在於 /sys/block, 但從 2.6.22 開始就已標記爲過時,只有在打開了 CONFIG_SYSFS_DEPRECATED 配置下編譯纔會有這個目錄的存在,並且在 2.6.26 內核中已正式移到 /sys/class/block, 舊的接口 /sys/block 爲了向後兼容保留存在,但其中的內容已經變爲指向它們在 /sys/devices/ 中真實設備的符號鏈接文件;
firmware 這裏是系統加載固件機制的對用戶空間的接口,關於固件有專用於固件加載的一套API,在附錄 LDD3 一書中有關於內核支持固件加載機制的更詳細的介紹;
fs 這裏按照設計是用於描述系統中所有文件系統,包括文件系統本身和按文件系統分類存放的已掛載點,但目前只有 fuse,gfs2 等少數文件系統支持 sysfs 接口,一些傳統的虛擬文件系統(VFS)層次控制參數仍然在 sysctl (/proc/sys/fs) 接口中中;
kernel 這裏是內核所有可調整參數的位置,目前只有 uevent_helper, kexec_loaded, mm, 和新式的 slab 分配器等幾項較新的設計在使用它,其它內核可調整參數仍然位於 sysctl (/proc/sys/kernel) 接口中 ;
module 這裏有系統中所有模塊的信息,不論這些模塊是以內聯(inlined)方式編譯到內核映像文件(vmlinuz)中還是編譯爲外部模塊(ko文件),都可能會出現在 /sys/module 中:編譯爲外部模塊(ko文件)在加載後會出現對應的/sys/module/<module_name>/, 並且在這個目錄下會出現一些屬性文件和屬性目錄來表示此外部模塊的一些信息,如版本號、加載狀態、所提供的驅動程序等;編譯爲內聯方式的模塊則只在當它有非0屬性的模塊參數時會出現對應的 /sys/module/<module_name>, 這些模塊的可用參數會出現在 /sys/modules/<modname>/parameters/<param_name> 中,如 /sys/module/printk/parameters/time 這個可讀寫參數控制着內聯模塊 printk 在打印內核消息時是否加上時間前綴;所有內聯模塊的參數也可以由 "<module_name>.<param_name>=<value>" 的形式寫在內核啓動參數上,如啓動內核時加上參數 "printk.time=1" 與 向 "/sys/module/printk/parameters/time" 寫入1的效果相同;沒有非0屬性參數的內聯模塊不會出現於此。
power 這裏是系統中電源選項,這個目錄下有幾個屬性文件可以用於控制整個機器的電源狀態,如可以向其中寫入控制命令讓機器關機、重啓等。
slab (對應 2.6.23 內核,在 2.6.24 以後移至 /sys/kernel/slab) 從2.6.23 開始可以選擇 SLAB 內存分配器的實現,並且新的 SLUB(Unqueued Slab Allocator)被設置爲缺省值;如果編譯了此選項,在 /sys 下就會出現 /sys/slab ,裏面有每一個 kmem_cache 結構體的可調整參數。對應於舊的 SLAB 內存分配器下的 /proc/slabinfo 動態調整接口,新式的 /sys/kernel/slab/<slab_name> 接口中的各項信息和可調整項顯得更爲清晰。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章