1.甚么是proc
視察LINUX F8的/etc/rc.d/sysinit文件可以發現,在該腳本的21行出現以下語句:
proc文件系統是1個偽文件系統,它只存在內存當中,而不占用外存空間。它以文件系統的方式為訪問系統內核數據的操作提供接口。用戶和利用程序可以通過proc得到系統的信息,并可以改變內核的某些參數。由于系統的信息,如進程,是動態改變的,所以用戶或利用程序讀取proc文件時,proc文件系統是動態從系統內核讀出所需信息并提交的。
2. proc的主要目錄和文件
它的主要目錄和文件結構以下:(/proc/)
如圖1所示,2088號進程是由startx命令產生的,即當前的Xwindows模式。
圖1
3. proc目錄下的cmdline是甚么
在/etc/rc.d/sysinit腳本的306行出現了以下代碼:
cmdline=$(cat /proc/cmdline)
意思是把/proc/cmdline的內容賦予cmdline變量。而前面說過/proc/cmdline的內容指的是內核命令行。我們先不去糾纏甚么是內核命令行,來看看它的內容。如圖2所示。
圖2
可以發現,它的內容是1段1段離散的字段。很明顯這些字符是由內核產生的,它們表示了系統運行環境的1些基本信息,它們在系統完全啟動之前就已肯定。這些字段就像標志位1樣,因爾后續的啟動,就能夠根據這些“標志位”來進行相干的啟動操作。
那末它是由誰產生的呢?粗糙的講,可以說是由grub生成的。Grub(Grand Unified Bootloader)引導加載程序,它是計算機讀取完BIOS信息后,從第1個啟動裝備的MBR中被讀取的內容。沒有它,核心根本就不能被加載到系統上。Grub的功能有很多,我們暫時不需要深入的了解。其中的kernel語句,告知了磁盤的MBR到甚么地方去讀取系統內核和輔助系統啟動的initrd(InitalRAM Disk)印象文件在甚么地方。同時可以加入1些啟動參數,如是不是打開RHGB,是不是強迫掃描...而這些字段,都統統的反應在了內核虛擬文件系統/proc里面的cmdline里面。
因此,當我們需要在系統啟動的時候判斷某些服務是不是被激活時,固然要看看/proc/cmdline里面的內容啦。