/*****************
* proc文件系統(tǒng)
*****************/
(1)/proc文件系統(tǒng)的特點和/proc文件的說明
/proc文件系統(tǒng)是一種特殊的、由軟件創(chuàng)建的文件系統(tǒng),內(nèi)核使用它向外界導出信息,/proc系統(tǒng)只存在內(nèi)存當中,而不占用外存空間。
/proc下面的每個文件都綁定于一個內(nèi)核函數(shù),用戶讀取文件時,該函數(shù)動態(tài)地生成文件的內(nèi)容。也可以通過寫/proc文件修改內(nèi)核參數(shù)
/proc目錄下的文件分析 /proc/$pid 關(guān)于進程$pid的信息目錄。每個進程在/proc 下有一個名為其進程號的目錄。例:$>strings -f /proc/[0-9]*/cmdline
- /proc/cmdline 內(nèi)核啟動的命令行
- /proc/cpuinfo 處理器信息,如類型、制造商、型號和性能。
- /proc/devices 列出字符和塊設(shè)備的主設(shè)備號,以及分配到這些設(shè)備號的設(shè)備名稱
- /proc/dma 顯示當前使用的DMA通道。
- /proc/filesystems 列出了可供使用的文件系統(tǒng)類型,通常是編入內(nèi)核的文件系統(tǒng)類型,但可以通過模塊加入新的類型
- /proc/interrupts 顯示使用的中斷號,中斷名稱,以及這些中斷從系統(tǒng)啟動后產(chǎn)生的次數(shù)
- /proc/ioports 當前使用的I/O端口。
- /proc/kallsyms 內(nèi)核符號表。安裝新的模塊后,會在這里體現(xiàn)出來
- /proc/kcore 系統(tǒng)物理內(nèi)存映象。與物理內(nèi)存大小完全一樣,但不實際占用這么多內(nèi)存;(記?。撼强截惖轿募?,/proc下沒有任何東西占用任何磁盤空間)
- /proc/kmsg 內(nèi)核輸出的消息。也被送到syslog。
- /proc/loadavg 系統(tǒng)的平均負載,前3個是過去1分鐘,5分鐘,15分鐘的負載,然后是正在運行的任務數(shù)和總?cè)蝿諗?shù),最后是上次運行的進程號
- /proc/meminfo 存儲器使用信息,包括物理內(nèi)存和swap。
- /proc/modules 當前加載了哪些核心模塊。
- /proc/partitions 系統(tǒng)當前掛載硬盤的分區(qū)信息
- /proc/pci 系統(tǒng)的pci總線信息
- /proc/net 網(wǎng)絡協(xié)議狀態(tài)信息。
- /proc/self 到查看/proc的程序的進程目錄的符號連接。當2個進程查看/proc時,是不同的連接。這主要便于程序得到它自己的進程目錄。
- /proc/slabinfo 系統(tǒng)中slab緩存的分配信息
- /proc/stat 系統(tǒng)的一些狀態(tài)信息
- /proc/swaps 系統(tǒng)采用的交換區(qū)信息
- /proc/sysrq-trigger 用于啟動sysRq鍵 $>echo 1 > sysrq-trigger
- /proc/uptime 系統(tǒng)啟動的時間長度和空閑的時間長度。供uptime使用
- /proc/version 內(nèi)核版本
(2)自行實現(xiàn)一個/proc文件
需包含頭文件<linux/proc_fs.h>,函數(shù)定義在/fs/proc/generic.c
a.在/proc下創(chuàng)建文件
調(diào)用create_proc_read_entry在/proc下創(chuàng)建新的文件
struct proc_dir_entry *create_proc_read_entry(
const char *name,
mode_t mode,
struct proc_dir_entry *base,
read_proc_t *read_proc,
void * data)
b.卸載/proc下的文件
采用remove_proc_entry卸載proc文件
void remove_proc_entry(
const char *name,
struct proc_dir_entry *parent);
c.定義返回數(shù)據(jù)的函數(shù)
在進程讀取/proc文件時,內(nèi)核會分配一個內(nèi)存頁(即PAGE_SIZE個字節(jié)的內(nèi)存塊),驅(qū)動將要寫的數(shù)據(jù)通過這個內(nèi)存頁返回到用戶空間。
typedef int (read_proc_t)(char *page, char **start, off_t off,
int count, int *eof, void *data);
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接