在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號為目錄名.
目錄,提供了安全相關的屬性,可讀可寫,以支援安全模組如SELinux等,需設定CONFIG_SECURITY。
檔案,當前的安全相關的屬性。
檔案,執行命令execve時設定的安全相關的屬性。
檔案,執行命令open、mkdir、symlink、mknod時設定的安全相關的屬性。
檔案,執行命令add_key時設定的安全相關的屬性。
檔案,最後一次執行命令execve時的安全相關的屬性,即前一個「/proc/[pid]/attr/current」。
檔案,建立socket時設定的安全相關的屬性。
檔案,可以用來修改分配給自動分組的CPU頻寬。這是通過在「nice」範圍內寫入一個數位來設定自動分組的nice值來完成的。取值範圍為+19(低優先順序)~ -20(高優先順序)。(寫入值超出這個範圍會導致write(2)失敗,錯誤為EINVAL。)
檔案,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。
檔案,裝置喚醒操作。
檔案,用於診斷記憶體碎片問題。
目錄,已安裝的匯流排。
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是什麼檔案系統的詳細內容,更多請關注TW511.COM其它相關文章!