在linux中,proc是虛擬檔案系統,是一個控制中心,可以透過更改其中某些檔案來改變核心運作狀態;它也是核心提空給我們的查詢中心,使用者可以透過它查看系統硬體及目前運作的進程資訊。 proc系統只存在記憶體當中,以檔案系統的方式為存取系統核心資料的操作提供接口,可以透過更改其中的某些檔案來改變核心運作狀態。
本教學操作環境:linux7.3系統、Dell G3電腦。
proc被稱為虛擬檔案系統,它是一個控制中心,可以透過更改其中某些檔案來改變核心運行狀態,它也是核心提空給我們的查詢中心,使用者可以透過它查看系統硬體及目前運行的進程資訊。
Linux中許多工具的資料來源正是proc目錄中的內容,例如lsmod的指令是cat /proc/modules的別名。
在Linux中存在著一類特殊的偽檔案系統,用於使用與檔案介面統一的操作來完成各種功能,例如ptyfs、devfs、sysfs和procfs。而procfs就是其中應用最廣泛的一種偽檔案系統。
就檔案系統這個術語而言,/ proc目錄並不是真正的檔案系統,它是一個虛擬檔案系統,有時也被稱為進程資訊偽檔案系統。
proc 放置的資料都是在記憶體當中,例如係統核心、行程、外部裝置的狀態及網路狀態等。因為這個目錄下的資料都是在記憶體當中,所以本身不佔任何硬碟空間。
procfs是Linux內核資訊的抽象文件接口,大量內核中的信息以及可調參數都被作為常規文件映射到一個目錄樹中,這樣我們就可以簡單直接的通過echo或cat這樣的文件操作指令對系統資訊進行查取和調整了。同時procfs也提供了一個接口,使得我們自己的核心模組或用戶態程式可以透過procfs進行參數的傳遞。在當今的Linux系統中,大量的系統工具也透過procfs獲取核心參數,例如ps、lspci等等,沒有procfs它們將可能無法正常運作。
proc檔案系統是一個偽檔案系統,它只存在記憶體當中,而不佔用外存空間。它以檔案系統的方式為存取系統核心資料的操作提供介面。使用者和應用程式可以透過proc得到系統的訊息,並且可以改變核心的某些參數。由於系統的信息,如進程,是動態改變的,所以用戶或應用程式讀取proc檔案時,proc檔案系統是動態從系統核心讀出所需資訊並提交的。
Linux系統上的/proc目錄是一種檔案系統,即proc檔案系統。與其它常見的檔案系統不同的是,/proc是一種偽檔案系統(也即虛擬檔案系統,它只存在記憶體當中,而不佔用外存空間。它以檔案系統的方式為存取系統核心資料的操作提供介面),儲存的是當前核心運行狀態的一系列特殊文件,使用者可以透過這些文件查看有關係統硬體及目前正在運行進程的信息,甚至可以透過更改其中某些文件來改變核心的運行狀態。
#目錄,系統中目前執行的每一個行程都有對應的目錄在/proc下,以進程的PID號碼為目錄名稱.
文件,ELF解釋器信息,格式為一個unsigned long類型的ID加一個unsigned long類型的值,最後為兩個0(man getauxval)。
文件,進程所屬的控制組,格式為冒號分隔的三個字段,分別是結構ID、子系統、控制組,需配置CONFIG_CGROUPS。
#文件,只寫,只用於進程的擁有者,清除用於估算記憶體使用量的PG_Referenced和ACCESSED/YOUNG,有1、2、3、4四種策略,1表示清除相關的所有頁,2表示清除相關的匿名頁,3表示清除相關的映射文件的頁,4表示清除相關的soft-dirty的頁,需設定CONFIG_PROC_PAGE_MONITOR。
文件,只讀,保存啟動進程的完整的命令列字串,如果是殭屍進程,這個檔案為空。
文件,進程的命令名,不同的線程(man clone prctl pthread_setname_np)可能有不同的線程名,位置在“task/[tid]/comm”,名字長度超過TASK_COMM_LEN時會被截斷。
文件,coredump過濾器,如00000037(man core),不同的二進位位表示過濾不同的訊息。
文件,控制CPU和記憶體的節點(man cpuset)。
目錄,符號連結到目前工作目錄。
文件,環境變數。
文件,符號連結到啟動進程的完整命令。 q
目錄,包含目前的fd,這些fd符號連結到真正開啟的檔案。
目錄,包含目前fd的信息,不同類型的fd資訊不同。
文件,從使用者命名空間映射的群組ID的資訊(man user_namespaces)。
文件,IO資訊。
文件,資源軟、硬限制(man getrlimit)。
#檔案,審計守護程式在核心中啟用稽核工具。在核心中開啟稽核功能之前執行的任何進程都將獲得 loginuid 4294967295。
4294967295 只是 (unsigned long) -1。 -1 表示未設定 loginuid。對於不是由任何登入程序(例如守護程序)產生的進程,這是正常行為。 loginuid 預設為 -1;每當您登入時(在 tty/在 DM/透過 ssh),pam_loginuid 模組都會將其變更為您的使用者 ID,並且該值由子程序保留。
#目錄,包含一些記憶體對映檔案(man mmap),檔案名稱格式為BeginAddress-EndAddress ,符號連結到映射的文件,需要配置CONFIG_CHECKPOINT_RESTORE。
文件,記憶體映射資訊。
文件,用於透過open、read、lseek存取進程的記憶體頁。
文件,掛載訊息,格式為44 41 253:1 / / rw,relatime shared :35 master:1 - ext4 /dev/vda1 rw,data=ordered,以空格作為分隔符,從左到右各字段的意思分別是唯一掛載ID、父掛載ID、檔案系統的設備主從號碼、檔案系統中掛載的根節點、相對於進程根節點的掛載點、掛載權限等掛載配置、可選配置、短橫線表示前面可選配置的結束、檔案系統類型、檔案系統特有的掛載來源或為none、額外配置。
#文件,掛載在目前進程的文件系統列表,/dev/vda1 / ext4 rw ,relatime,data=ordered 0 0 格式參考(man fstab)。
文件,掛載訊息,格式形如device /dev/vda1 mounted on / with fstype ext4 [statistics]。
#目錄,儲存行程的網路相關檔案和目錄。
#目錄,儲存了每個名字空間的入口,詳見(man namespaces)。
文件,numa即Non Uniform Memory Access,詳見(man numa)。
文件,調整OOM分數,OOM即Out Of Memory,發生OOM時OOM Killer根據OOM分數殺掉分數高的進程,預設值為0,會繼承自父進程的設定。
#文件,OOM分數。
文件,OOM分數介於-1000到1000之間。
文件,目前進程的虛擬記憶體頁映射訊息,需要配置CONFIG_PROC_PAGE_MONITOR。
文件,使進程個性標誌在/proc中可見。因為一個行程的個性可能是敏感的(例如READ_IMPLIES_EXEC),所以這個檔案只能被進程擁有者讀。
#文件,與使用者和群組ID映射類似,可以為使用者名稱空間建立專案ID映射。 (項目id用於磁碟配額;請參閱setquota(8)和quotactl(2)。)
#文件,公開每個任務的補丁狀態值,以便使用者可以確定哪些任務正在阻止修補操作的完成。
#目錄,連結到了目前程序的根目錄。
#檔,行程的調度統計、狀態資訊。
檔案,流程的調度資訊。
文件,進程會話ID,預設4294967295。
文件,如果使用者命名空間中包含進程pid的進程被允許使用setgroups(2)系統調用,則/proc/[pid]/setgroups檔案顯示字串"allow";如果使用者名稱空間中不允許setgroups(2),則顯示「deny」。注意,不管/proc/[pid]/setgroups檔案中的值是多少(也不管進程的能力是多少),如果/proc/[pid]/gid_map還沒有設置,調用setgroups(2)也是不允許的。
文件,記憶體映射訊息,類似於pmap指令,需要配置CONFIG_PROC_PAGE_MONITOR。
文件,核心空間的函數呼叫堆疊,需要設定CONFIG_STACKTRACE。
文件,進程狀態信息,用於ps命令。
文件,進程記憶體使用信息,以空格分隔的7個數字,從左到右分別表示程式總大小、常駐記憶體大小、共享記憶體頁大小、text code、library、data stack、dirty pages。
文件,可讀性好的進程相關資訊。
文件,系統呼叫相關訊息,需要設定CONFIG_HAVE_ARCH_TRACEHOOK。
#目錄,每個執行緒一個子目錄,目錄名為執行緒ID。
文件,POSIT定時器列表,包括定時器ID、訊號等資訊。
#文件,使用者ID映射資訊。
文件,在進程休眠時內核中對應位置的符號表示,如do_wait。
文件,裝置喚醒操作。
文件,用於診斷記憶體碎片問題。
目錄,已安裝的匯流排。
#文件,輸入裝置資訊。
#文件,句柄資訊。
文件,pci插口資訊。
文件,pci設備資訊。
cgroups資訊匯總,欄位 subsys_name hierarchy num_cgroups enabled。
文件,系統啟動時傳遞給Linux核心的參數,如lilo、grub等boot管理模組。
文件,要查看系統控制台/dev/console中目前使用的裝置行字符,你可以簡單地查看/proc/console文件.
文件,CPU和系統架構信息,lscpu指令使用這個文件。
文件,核心加密API提供的加密清單。
文件,裝置相關資訊。
文件,磁碟狀態。
文件,dma即Direct Memory Access。
文件,執行網域清單。
文件,Frame Buffer訊息,需要設定CONFIG_FB。
文件,核心支援的檔案系統類型(man filesystems)。
#目錄,掛載的檔案系統資訊。
文件,每個CPU每個IO的中斷資訊。依序顯示irq編號,每個cpu對該irq的處理次數,中斷控制器的名字,irq的名字,以及驅動程式註冊該irq時所使用的名字。
文件,IO記憶體映射資訊。
文件,IO連接埠資訊。
#目錄,下面會為每個註冊的irq建立一個以irq編號為名字的子目錄。
文件,用於動態連結和和模組綁定的符號定義。
文件,系統中ELF格式的實體記憶體。
#檔案,公開了讀取線程具有查看權限的鍵列表,並提供了有關每個鍵的各種資訊。執行緒不需要擁有金鑰,該金鑰在此文件中可見。
#檔,列出了在系統上至少具有一個金鑰的每個用戶ID的各種資訊。
文件,核心日誌訊息,dmsg指令使用這個檔案。
文件,每個物理頁框映射的次數,需要配置CONFIG_PROC_PAGE_MONITOR。
#文件,每個實體頁幀的掩碼,需要設定CONFIG_PROC_PAGE_MONITOR。
文件,目前系統負載。
文件,目前文件鎖定的狀態。
文件,虛擬設備資訊(軟raid等)。
文件,系統記憶體使用統計,free指令使用了這個文件。
文件,其他的主要設備(設備號碼為10)上註冊的驅動程式。
文件,系統載入的模組訊息,相關指令為lsmod。
文件,連結到了/self/mounts。
文件,Memory Type Range Registers。
#目錄,網路偽檔案系統相關。
文件,其他頁面分配器資訊。
文件,分區資訊。
文件,調度器debug資訊。
文件,調度器資訊。
#目錄,SCSI介面裝置。
目錄,連結到了目前行程所在的目錄。
文件,核心快取訊息,需要配置CONFIG_SLAB。
文件,系統軟體中斷資訊。
文件,系統和核心的統計資料。
文件,swap分割區使用情況。
目錄,系統變數相關資訊。
#文件,可寫,觸發系統呼叫。
目錄,包含msg、sem、shm三個文件,為System V IPC物件。
#文件,還在運行著的定時器列表。
#文件,定時器狀態。
#目錄,tty裝置相關。
文件,系統更新時間和進程空閒時間。
文件,核心版本資訊。
#文件,虛擬記憶體分配資訊。
文件,記憶體統計信息,以鍵值對形式顯示。
文件,記憶體區塊信息,用於分析虛擬記憶體的行為。
相關推薦:《Linux影片教學》
以上是linux下proc是什麼檔案系統的詳細內容。更多資訊請關注PHP中文網其他相關文章!