获取系统信息3——proc文件系统介绍和使用
生活随笔
收集整理的這篇文章主要介紹了
获取系统信息3——proc文件系统介绍和使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
以下內容源于朱有鵬《物聯網大講堂》課程的學習整理,如有侵權,請告知刪除。
一、proc文件系統介紹
1、操作系統級別的調試
- 簡單程序,可以單步調試;(多線程不行,linux內核不行)
- 復雜程序,可以printf、cout等打印信息調試;(輸出信息到控制臺)
- 也可以框架體系日志記錄信息調試;(輸出信息到某個txt)
- 但內核很復雜,存在調試困境;
2、proc虛擬文件系統的工作原理
(1)linux內核是一個非常龐大、非常復雜的一個單獨的程序,調試此程序是非常復雜的。
- kernel這樣龐大的項目,添加或更改其中一個功能是非常麻煩的,因為該功能可能會影響其他功能。
- 早期內核版本中盡管調試很麻煩,但是高手們還可以憑借個人超凡脫俗的能力去駕馭,但是到了2.4左右的版本時,難度已經非常大了。
- 為了降低內核調試和學習的難度,內核開發者們在內核中添加了一些屬性專門用于調試內核,proc文件系統就是一個嘗試。
(2)proc文件系統的思路
- 在內核中構建一個虛擬文件系統/proc;
- 內核運行時,將內核中一些關鍵的數據結構,以文件的方式呈現在/proc目錄中的一些特定文件中;
- 將不可見的內核中的數據結構,以可視化的方式呈現給內核的開發者。
(3)proc文件系統提供了一種調試內核的方法
- 通過實時觀察/proc/xxx文件,獲取內核中特定數據結構的值;
- 對比添加新功能的前后,判斷新功能產生的影響對與否。
(4)proc目錄下的文件,不是真實文件,而只是一個接口
- 文件大小都是0,因為這些文件并不存在于硬盤中;
- 當讀取這個文件時,內核并不是去硬盤上找這個文件,而是映射為內核內部的一個數據結構,把該數據結構讀取出來,并且格式化成字符串,返回;
- 盡管我們看到的還是一個文件內容字符串,和普通文件一樣的,但是實際上我們知道這個內容是實時的從內核中數據結構來的,而不是硬盤中來的。
- 這些文件都是只讀的,不能更改。
3、常用proc中的文件介紹
(1)/proc/cmdline,命令行參數
(2)/proc/cpuinfo
(3)/proc/devices 調試驅動的時候會用到
(4)/proc/interrupts
二、proc文件系統的使用
1、cat以手工查看,如“cat ? /proc/cmdline”;
2、程序中可以文件IO訪問;
3、在shell程序中用cat命令結合正則表達式來獲取并處理內核信息;
4、sys文件系統
(1)sys文件系統本質上和proc文件系統一樣
- 都是虛擬文件系統,都在根目錄下有個目錄(一個是/proc目錄,另一個是/sys目錄)
- 因此都不是硬盤中的文件,都是內核中的數據結構的可視化接口。
(2)不同的是/proc中的文件只能讀,但是/sys中的文件可以讀寫
- 讀/sys中的文件就是獲取內核中數據結構的值,而寫入/sys中的文件就是設置內核中的數據結構的元素的值。
(3)歷史上剛開始先有/proc文件系統,人們希望通過這種技術來調試內核。
- 實際做出來后確實很有用,所以很多內核開發者都去內核添加代碼,向/proc目錄中寫文件。
- 剛開始的時候內核管理者對proc目錄的使用沒有統一規劃,后來的結果就是proc里面的東西又多又雜亂。
(4)后來proc中的內容缺乏統一規劃,于是添加了sys目錄
- sys文件系統很好地進行規劃和約定,于是使用sys目錄時有了規矩。
總結
以上是生活随笔為你收集整理的获取系统信息3——proc文件系统介绍和使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全面的软件测试-软件测试图解
- 下一篇: 回文的判断代码