proc 檔案系統

2022-05-02 05:48:14 字數 3187 閱讀 5346

在瀏覽 /proc 目錄的時候您會發現許多目錄的名稱是一些數字。這些目錄儲存了當前系統中執行的所有程序的資訊。

$ ls -d /proc/[0-9]*

/proc/1/ /proc/302/ /proc/451/ /proc/496/ /proc/556/ /proc/633/

/proc/127/ /proc/317/ /proc/452/ /proc/497/ /proc/557/ /proc/718/

/proc/2/ /proc/339/ /proc/453/ /proc/5/ /proc/558/ /proc/755/

/proc/250/ /proc/385/ /proc/454/ /proc/501/ /proc/559/ /proc/760/

/proc/260/ /proc/4/ /proc/455/ /proc/504/ /proc/565/ /proc/761/

/proc/275/ /proc/402/ /proc/463/ /proc/505/ /proc/569/ /proc/769/

/proc/290/ /proc/433/ /proc/487/ /proc/509/ /proc/594/ /proc/774/

/proc/3/ /proc/450/ /proc/491/ /proc/554/ /proc/595/

請注意,作為普通使用者,您(理論上)只能檢視與您自己的程序相關的資訊,而不是其他使用者的。因此,請公升級為 root 使用者,並檢視程序 127 包含哪些資訊:

$ su

password:

$ cd /proc/127

$ ls -l

total 0-9

-r--r--r-- 1 root root 0 dec 14 19:53 cmdline

lrwx------ 1 root root 0 dec 14 19:53 cwd -> //

-r-------- 1 root root 0 dec 14 19:53 environ

lrwx------ 1 root root 0 dec 14 19:53 exe -> /usr/sbin/apmd*

dr-x------ 2 root root 0 dec 14 19:53 fd/

pr--r--r-- 1 root root 0 dec 14 19:53 maps|

-rw------- 1 root root 0 dec 14 19:53 mem

lrwx------ 1 root root 0 dec 14 19:53 root -> //

-r--r--r-- 1 root root 0 dec 14 19:53 stat

-r--r--r-- 1 root root 0 dec 14 19:53 statm

-r--r--r-- 1 root root 0 dec 14 19:53 status

$

每個目錄包含同樣的專案。以下簡單介紹其中某些專案:

cmdline:該(虛擬)檔案包含了啟動該程序的整個命令列。它未曾格式化:程式與其引數之間沒有空格,行末也沒有換行。要檢視它,您可以使用:perl -ple 's,\00, ,g' cmdline

environ:該檔案包含為該程序定義的所有環境變數,格式為 變數=值。與 cmdline 檔案一樣,其內容未曾格式化過:各個變數之間沒有分行,檔案末尾也沒有換行。要檢視,可以:perl -pl -e 's,\00,\n,g' environ

fd:在此子目錄中包含了該程序當前開啟的所有描述符。參見下文。

maps:當您列印該命名管道內容時(例如使用cat), 您將看到該程序位址空間中當前對映到檔案中的那部分。自左至右各列為:與該對映關聯的位址空間,與該對映關聯的許可權,該對映起始位置的偏移量(從檔案開始 處算起),儲存該對映檔案裝置的主、從序號(十六進製制格式),該檔案的 inode 序號,以及該檔案的檔名。當裝置號為 0 且沒有 inode 號或檔名時,它就是乙個匿名對映。請參閱 mmap(2)。

root:該符號鏈結指向該程序使用的根目錄。通常為 /,請參閱 chroot(2)。

status:該檔案包含該程序的眾多資訊:可執行檔名、當前狀態、pid 和 ppid、實際及有效的 uid 和 gid、記憶體使用情況、以及其他。請注意,stat 和 statm 現已過時。它們包含的資訊現存於 status。

瀏覽程序 127 的 fd 目錄,我們將看到:

$ ls -l fd

total 0

lrwx------ 1 root root 64 dec 16 22:04 0 -> /dev/console

l-wx------ 1 root root 64 dec 16 22:04 1 -> pipe:[128]

l-wx------ 1 root root 64 dec 16 22:04 2 -> pipe:[129]

l-wx------ 1 root root 64 dec 16 22:04 21 -> pipe:[130]

lrwx------ 1 root root 64 dec 16 22:04 3 -> /dev/apm_bios

lr-x------ 1 root root 64 dec 16 22:04 7 -> pipe:[130]

lrwx------ 1 root root 64 dec 16 22:04 9 ->

/dev/console

$

實際上,這是該程序開啟的檔案描述符列表。每個開啟的描述符由乙個符號鏈結表示,其名稱為該描述符的編號,並指向該描述符開啟的檔案[25]。請注意這些符號鏈結的許可權:它們的意義僅代表被相應描述符開啟的檔案的許可權

Proc檔案系統

include static struct proc dir entry proc null int read proc char page,char start,off t off,int count,int eof,void data len sprintf page len,debug mod...

proc檔案系統

linux 將一切事物都看成檔案,硬體裝置在檔案系統中也有相應的條目。我們使用底層系統呼叫這樣一種特殊方式通過 dev目錄中的檔案來訪問硬體。控制硬體的軟體驅動程式通常可以以某種特定方式配置,或者能夠報告相關資訊。用於與裝置驅動程式進行通訊的工具在過去就已經十分常見,近來年,傾向於提供更一致的方式來...

proc檔案系統

proc檔案系統是由核心實現的檔案系統。當使用者態訪問 proc下檔案時,實際上是呼叫核心中和該檔案對應的特定函式。一般用proc檔案來實現核心 驅動的呼叫。大部分proc檔案是唯讀的,用於獲取核心資訊 還有一些proc檔案是可寫的,當使用者態改變了proc檔案的內容時,會呼叫核心的函式,從而改變核...