【Linux】proc文件系統(tǒng)
前言
?一、proc文件系統(tǒng)簡(jiǎn)介
1.1 proc文件系統(tǒng)是什么?
1.2?proc文件系統(tǒng)的作用和特點(diǎn)
1.3 proc文件系統(tǒng)提供的信息
二、proc文件系統(tǒng)常用節(jié)點(diǎn)詳述
2.1 /proc/cpuinfo?
2.2 /proc/meminfo
2.3 /proc/kallsyms
2.4 /proc/interrupts
2.5 /proc/loadavg
三、總結(jié)
前言
重要的環(huán)節(jié):帶著問題不斷前進(jìn)
在Linux系統(tǒng)中,有一些特殊文件系統(tǒng),用于進(jìn)行文件接口統(tǒng)一的操作來完成各種功能,proc文件系統(tǒng)就是其中一個(gè)。
- proc文件系統(tǒng)
- proc文件系統(tǒng)的作用和特點(diǎn)
- proc文件系統(tǒng)可以提供什么信息
- proc文件系統(tǒng)常見的用法
在學(xué)習(xí)Linux筆記老師的課程中,老師講的精簡(jiǎn)深入,但學(xué)習(xí)入門還需要一些知識(shí)背景,這里我進(jìn)行了拓展和總結(jié)。
參考文章和視頻:https://xuesong.blog.csdn.net/article/details/109522945
https://live.csdn.net/v/263371?spm=1001.2014.3001.5501
?一、proc文件系統(tǒng)簡(jiǎn)介
1.1 proc文件系統(tǒng)是什么?
Linux系統(tǒng)上的/proc目錄是一種文件系統(tǒng),即proc文件系統(tǒng)。
/與其它常見的文件系統(tǒng)不同的是,/proc是虛擬文件系統(tǒng),它不包含任何磁盤上的文件,而是由內(nèi)核在運(yùn)行時(shí)動(dòng)態(tài)生成的文件和目錄。
在Linux中存在著一類特殊的偽文件系統(tǒng),進(jìn)行文件接口統(tǒng)一的操作來完成各種功能,例如ptyfs、devfs、sysfs和procfs。而procfs就是其中應(yīng)用最廣泛的一種偽文件系統(tǒng)。
proc 文件系統(tǒng)的掛載點(diǎn)是 /proc,它最早設(shè)計(jì)用于提供進(jìn)程運(yùn)行時(shí)的信息,比如進(jìn)程的運(yùn)行狀態(tài)、進(jìn)程當(dāng)前打開的文件、創(chuàng)建的套接字、虛擬內(nèi)存的排布等,這也是它名字的由來 (Process Data Filesystem)。后來,很多系統(tǒng)級(jí)的內(nèi)核信息也被加入進(jìn)來,如中斷信息、設(shè)備映射信息、內(nèi)存狀態(tài)等等。
總的來說,/proc 文件系統(tǒng)為系統(tǒng)管理員和開發(fā)人員提供了一種方便的方式來查詢和調(diào)試系統(tǒng)的狀態(tài)和性能。
1.2?proc文件系統(tǒng)的作用和特點(diǎn)
proc 文件系統(tǒng)提供了一些內(nèi)核中各個(gè)子系統(tǒng)的信息,它使得在用戶空間簡(jiǎn)單地使用 cat 和 echo 命令,或者read 和 write 系統(tǒng)調(diào)用就可以獲得內(nèi)核各子系統(tǒng)的信息,比如 CPU 型號(hào)和參數(shù)、內(nèi)存使用量、可用的定時(shí)硬件及詳細(xì)參數(shù)、連接的外部設(shè)備及映射地址,等等,還可以在系統(tǒng)運(yùn)行時(shí)動(dòng)態(tài)修改內(nèi)核參數(shù),而不需要重新編譯內(nèi)核的源代碼。
proc文件系統(tǒng)有哪些特點(diǎn)呢?
- 可讀性:proc文件系統(tǒng)的信息是以文本格式呈現(xiàn)的,這使得它易于讀取和解析。
- 系統(tǒng)級(jí)別:proc文件系統(tǒng)提供了對(duì)內(nèi)核和系統(tǒng)級(jí)別信息的訪問,例如系統(tǒng)中正在運(yùn)行的進(jìn)程、內(nèi)存使用情況、CPU信息、硬件配置等等。
- 可以用于診斷和調(diào)試:proc文件系統(tǒng)提供了對(duì)系統(tǒng)狀態(tài)和進(jìn)程信息的實(shí)時(shí)訪問,這使得它非常有用于診斷和調(diào)試系統(tǒng)問題。
- 穩(wěn)定性和可維護(hù)性:當(dāng)需要修改系統(tǒng)的各種參數(shù)以及配置信息時(shí),我們可以通過proc文件系統(tǒng)來管理就可以實(shí)現(xiàn),而無需編寫專門的內(nèi)核模塊。
?
1.3 proc文件系統(tǒng)提供的信息
文件 | 介紹 |
/proc/cpuinfo | 這個(gè)文件包含了有關(guān) CPU 的詳細(xì)信息,包括廠商、型號(hào)、頻率、緩存等信息 |
/proc/meminfo | 這個(gè)文件包含了有關(guān)內(nèi)存的詳細(xì)信息,包括可用內(nèi)存、緩存大小、交換分區(qū)等信息 |
/proc/loadavg | 這個(gè)文件包含了系統(tǒng)的負(fù)載平均值,它表示系統(tǒng)正在運(yùn)行的進(jìn)程數(shù)和等待 CPU 的進(jìn)程數(shù)的平均值。 |
/proc/kallsyms | 該文件是一個(gè)符號(hào)表,包含了內(nèi)核的所有全局變量和函數(shù)在內(nèi)存中的地址。 |
/proc/interrupts | 該文件包含了系統(tǒng)記錄的在每個(gè) CPU 上處理的各類中斷的計(jì)數(shù)信息。 |
/proc/version | 這個(gè)文件包含了系統(tǒng)的版本信息,包括內(nèi)核版本、GCC 版本等信息。 |
/proc/net/tcp | 這個(gè)文件包含了有關(guān) TCP 連接的信息,包括本地地址、遠(yuǎn)程地址、狀態(tài)等信息。 |
/proc/net/udp | 這個(gè)文件包含了有關(guān) UDP 連接的信息,包括本地地址、遠(yuǎn)程地址、狀態(tài)等信息 |
/proc/sys/kernel/hostname | 這個(gè)文件包含了系統(tǒng)的主機(jī)名 |
/proc/sys/kernel/pid_max | 這個(gè)文件包含了系統(tǒng)允許的最大進(jìn)程 ID |
/proc/sys/fs/file-nr | 這個(gè)文件包含了有關(guān)打開文件的統(tǒng)計(jì)信息,包括當(dāng)前打開的文件數(shù)、已分配的文件句柄數(shù)和最大文件句柄 |
二、proc文件系統(tǒng)常用節(jié)點(diǎn)詳述
2.1 /proc/cpuinfo?
該文件包含了當(dāng)前系統(tǒng) CPU 的參數(shù)信息,包括 CPU 的核心數(shù)量、每個(gè)核心的工作頻率、緩存大小、字寬地址線長(zhǎng)度等。比如,在我的個(gè)人電腦上,cat /proc/cpuinfo 顯示的部分信息如下:
2.2 /proc/meminfo
這個(gè)文件顯示的是系統(tǒng)中當(dāng)前的內(nèi)存狀態(tài)信息,如物理內(nèi)存總?cè)萘?、已使用?nèi)存、空閑內(nèi)存、共享內(nèi)存、交換內(nèi)存大小,等等。
在日常的開發(fā)工作中,開發(fā)者通常更偏向于通過 top 命令的輸出,查看系統(tǒng)當(dāng)前的內(nèi)存使用狀況,因?yàn)榇蠖鄶?shù)時(shí)候,只關(guān)心內(nèi)存的總量和當(dāng)前的占用量就足夠了。
但是在某些特殊情況下,還是需要參考這個(gè)文件中提供的更加詳細(xì)的內(nèi)存狀態(tài)信息,如 slab 內(nèi)存占用量(記錄在一個(gè)頁(yè)框中如何劃分和分配小存儲(chǔ)區(qū)用的內(nèi)存)、可回收內(nèi)存量 (SReclaimable)、內(nèi)核??臻g大小(Kernel Stack)、使用 malloc 分配的堆內(nèi)存總量,以及使用 mmap 映射的內(nèi)存總量,等等。
2.3 /proc/kallsyms
該文件是一個(gè)符號(hào)表,包含了內(nèi)核的所有全局變量和函數(shù)在內(nèi)存中的地址。
這是一個(gè)幫助內(nèi)核開發(fā)者調(diào)試內(nèi)核而加入的文件,在 Linux 系統(tǒng)崩漬時(shí)產(chǎn)生的 Opps 信息中,函數(shù)調(diào)用堆棧中顯示出來的函數(shù)名,就是在這個(gè)文件的幫助下生成的。
2.4 /proc/interrupts
該文件包含了系統(tǒng)記錄的在每個(gè) CPU 上處理的各類中斷的計(jì)數(shù)信息。
在Linux 中,如果沒有特殊的處理,通常所有的中斷都會(huì)交給 CPU 的第一個(gè)核心(CPUO)來處理。有一個(gè)叫做 rqbalance 的實(shí)用程序可以幫助系統(tǒng)把中斷分發(fā)給不同的 CPU,實(shí)現(xiàn)負(fù)載均衡,對(duì)多核處理器的性能提升和控制能耗都有明顯的作用。
當(dāng)前的大多數(shù) Linux 發(fā)行版都會(huì)默認(rèn)在多核處理器上啟動(dòng)這個(gè)服務(wù),但是以防萬一,讀者可以在自己的系統(tǒng)上確認(rèn)該服務(wù)是否開啟,同時(shí)通過檢查 proc/interrupts 文件來確定中斷是不是均衡地分發(fā)到了不同的 CPU上。
2.5 /proc/loadavg
這個(gè)文件顯示系統(tǒng)在過去一段時(shí)間的平均負(fù)載,一個(gè)真實(shí)的輸出如下所示:
上面的信息,具體含義如下:
1.過去一分鐘的系統(tǒng)平均負(fù)載
2.過去五分鐘的系統(tǒng)平均負(fù)載
3.過去十五分鐘的系統(tǒng)平均負(fù)載
4.采樣時(shí)刻運(yùn)行隊(duì)列的任務(wù)數(shù)/系統(tǒng)中活躍的總?cè)蝿?wù)數(shù)
5.采樣時(shí)刻占用最大的線程ID
?這個(gè)文件的輸出中的前三個(gè)值,經(jīng)常被用來觀察系統(tǒng)負(fù)載的發(fā)展趨勢(shì)。如果前面的值比后面的值小,說明系統(tǒng)的負(fù)載在減輕;反之,說明系統(tǒng)負(fù)載開始呈現(xiàn)出上升的趨勢(shì)。
三、總結(jié)
特殊文件系統(tǒng)的存在,使得Linux對(duì)內(nèi)核數(shù)據(jù)的查看和修改具有簡(jiǎn)單到極致的接口,同時(shí)又不失強(qiáng)大靈活的功能。文章來源:http://www.zghlxwxcb.cn/news/detail-457415.html
proc文件系統(tǒng)使得系統(tǒng)易于調(diào)試維護(hù),系統(tǒng)的穩(wěn)定性、可維護(hù)性提高,文章來源地址http://www.zghlxwxcb.cn/news/detail-457415.html
到了這里,關(guān)于【Linux】proc文件系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!