使用 proc 檔案系統來控制系統

2021-07-05 11:48:45 字數 4408 閱讀 5174

/proc 檔案系統是 linux 的優秀特性之一,本文向您詳細講述了它的一些最實用的基礎知識。使用 /proc,您再也不用關閉並重新引導機器來管理作業系統的許多細節問題,這對那些要求系統的可用性盡可能高的管理員來說非常有用。

任何管理過具有商業重要性的系統的人都知道計算機正常執行時間的價值 - 或者反過來講,知道使用者因故障時間會給您帶來諸多頭痛問題。公司採用 unix 伺服器的主要原因之一是由於它的可靠性和穩定性。如果仔細管理,通常可以很長時間不需重啟這些伺服器。為了做到盡善盡美,您可以實時執行一些管理任務,甚至是核心這一級別的任務,從而保持伺服器的可用性。雖然因公升級硬體或因某人踢掉電源線而仍需要重啟系統,但了解到許多管理任務可以在不干擾服務的情況下執行,總是有益的。

更改執行中的核心的引數

linux 向管理員提供了非常好的方法,使他們可以在系統執行時更改核心,而不需要重新引導核心/系統。這是通過 /proc 虛擬檔案系統實現的。linux gazette 給出了乙份有關 /proc 的參考,它是我所看到過的最簡單且最容易的參考之一。(請參閱參考資料,其中有至這篇文章的鏈結。)/proc 檔案系統主要可以讓您檢視執行中的核心,這一點對於監控效能、查詢系統資訊、了解系統是如何配置的以及更改該配置很有用。該檔案系統被稱為虛擬檔案系統,因為它實際上根本不是乙個檔案系統。它只是核心提供的乙個對映,被附加在通常的檔案系統結構之上,從而使您能夠訪問它。

我們可以採用某種方法在系統正常執行的同時更改執行中的核心的引數,這一事實賦予了系統管理員在更改核心設定方面強大的能力和高的靈活性。這種實現是出自部分 linux 核心開發人員富有靈感的想法。但能力太大會是一件壞事嗎?有時確實如此。如果準備更改 /proc 檔案系統中的任何內容,您必須確保自己知道在更改什麼以及這會對系統產生什麼影響。這些技術確實有用,但錯誤的舉動會帶來完全不希望得到的結果。如果您不熟悉這方面的內容,或者不確定您所做的某項更改會帶來什麼影響,那麼請在一台對您或您公司不重要的機器上進行實踐。

如何更改

首先,考慮怎樣做不會對核心進行更改。有兩條充分的理由說明了為什麼不能直接切換至 /proc 檔案系統,用文字編輯器開啟乙個檔案,做一系列更改,然後儲存該檔案,再退出。這兩條理由是:

資料完整性:所有這些檔案描述了執行中的系統,由於核心可以隨時更改這些檔案中的任何乙個,因此如果開啟乙個編輯器,然後更改某些資料,而同時,系統也正在底層更改這些資料,那麼無論您儲存下來的任何內容都不可能是核心所期望的內容。

虛擬檔案:所有這些檔案實際上都不存在。如何使儲存的資料同步,等等?

所以,解決辦法是,不使用編輯器來更改任何這些檔案。每當更改 /proc 檔案系統中的任何內容時,應該使用 echo 命令,然後從命令行將輸出重定向至 /proc 下所選定的檔案中。例如:

echo "your-new-kernel-value" > /proc/your/file

類似的,如果希望檢視 /proc 中的資訊,應該使用專門用於此用途的命令,或者使用命令列下的 cat 命令。

更改什麼

要很好地使用 /proc 不需要您是一位核心方面的高手,只需基本了解這個檔案系統的結構就可以極大地幫助您。直到有一天使用者向您詢問某些特定的功能,使您很高興曾下功夫了解過在**進行更改,您才可能會覺得有必要知道關於 /proc 中的任何事情。在這方面,/proc 檔案系統通過其結構和檔案許可權幫助系統管理員。

/proc 中的每個檔案都有一組分配給它的非常特殊的檔案許可權,並且每個檔案屬於特定的使用者標識。這一點實現得非常仔細,從而提供給管理員和使用者正確的功能。下面這個列表彙總了各個檔案上有哪些特定的許可權:

唯讀:任何使用者都不能更改該檔案;它用於表示系統資訊

root 寫:如果 /proc 中的某個檔案是可寫的,則通常只能由 root 使用者來寫

root 讀:有些檔案對一般系統使用者是不可見的,而只對 root 使用者是可見的

其它:出於各種原因,您可能會看到不同於上面常見的三種許可權的組合

關於 /proc,您會發現最通常的情況是,它的大多數檔案是唯讀的,除了 /proc/sys 目錄。該目錄下存放著大多數的核心引數(而不是資訊),並且設計成可以在系統執行的同時進行更改。因此這個目錄是本文的主旨所在。

就更改 /proc 中什麼內容而言,要了解的最後一點是,應該向這些檔案實際寫些什麼。當檢視 /proc 中各種檔案時,會發現其中一些檔案對我們來說是可讀的,一些檔案是資料檔案。通過用特定的實用程式(譬如 top、lspci 和 free),這些資料檔案仍然也可讀。您還會注意到,對我們來說可讀檔案有兩種不同格式:一些是二進位制開關,另一些包含其它資訊。二進位制開關檔案只包含代表特定核心功能的 0(關)或 1(開)。

進行更改

詳細介紹有關 /proc 中每個檔案的用法和確切資訊超出了本文所涉及的範圍。要獲得任何關於本文沒有涉及到的 /proc 檔案的其它資訊,乙個最佳**就是 linux 核心源**本身,它包含了一些非常優秀的文件。對於系統管理員,/proc 中的以下檔案較有用。這不意味著它是乙份詳盡的說明,而只是日常使用中便於查閱的參考。

/proc/scsi

/proc/scsi/scsi

作為系統管理員,需要了解的最有用內容是,在有熱交換驅動器情況下,如何不重啟系統就可以新增更多磁碟空間。假使不使用 /proc,您可以插入驅動器,但為了使系統識別新磁碟,必須隨即重新引導系統。這裡,可以用以下命令來使系統識別新的驅動器:

echo "scsi add-single-device w x y z" > /proc/scsi/scsi

為使該命令正常執行,必須指定正確的引數值 w、x、y 和 z,如下所示:

w 是主機介面卡標識,第乙個介面卡為零(0)

x 是主機介面卡上的 scsi 通道,第乙個通道為零(0)

y 是裝置的 scsi 標識

z 是 lun 號,第乙個 lun 為零(0)

一旦將磁碟新增到系統中之後,可以掛裝任何先前已格式化的檔案系統,也可以開始對它進行格式化等。例如,如果不確定磁碟是什麼裝置,或者想檢查任何先前已有的分割槽,則可以用如 fdisk -l 這樣的命令來向您報告這方面的資訊。

相反的,在不重新引導系統的情況下將裝置從系統中除去的命令是:

echo "scsi remove-single-device w x y z" > /proc/scsi/scsi

在輸入這條命令並將熱交換 scsi 磁碟從系統中除去之前,請確保首先卸下已從該磁碟安裝的任何檔案系統。

/proc/sys/fs/

/proc/sys/fs/file-max

該檔案指定了可以分配的檔案控制代碼的最大數目。如果使用者得到的錯誤訊息宣告由於開啟檔案數已經達到了最大值,從而他們不能開啟更多檔案,則可能需要增加該值。可將這個值設定成有任意多個檔案,並且能通過將乙個新數字值寫入該檔案來更改該值。

預設設定:4096

/proc/sys/fs/file-nr

該檔案與 file-max 相關,它有三個值:

已分配檔案控制代碼的數目

已使用檔案控制代碼的數目

檔案控制代碼的最大數目

該檔案是唯讀的,僅用於顯示資訊。

/proc/sys/fs/inode-*

任何以名稱"inode"開頭的檔案所執行的操作與上面那些以名稱"file"開頭的檔案所執行的操作一樣,但所執行的操作與索引節點有關,而與檔案控制代碼無關。

/proc/sys/fs/overflowuid 和 /proc/sys/fs/overflowgid

這兩個檔案分別儲存那些支援 16 位使用者標識和組標識的任何檔案系統的使用者標識(uid)和組標識(gid)。可以更改這些值,但如果您確實覺得需要這樣做,那麼您可能會發現更改組和密碼檔案項更容易些。

預設設定:65534

/proc/sys/fs/super-max

該檔案指定超級塊處理程式的最大數目。掛裝的任何檔案系統需要使用超級塊,所以如果掛裝了大量檔案系統,則可能會用盡超級塊處理程式。

預設設定:256

/proc/sys/fs/super-nr

該檔案顯示當前已分配超級塊的數目。該檔案是唯讀的,僅用於顯示資訊。

/proc/sys/kernel

/proc/sys/kernel/acct

該檔案有三個可配置值,根據包含日誌的檔案系統上可用空間的數量(以百分比表示),這些值控制何時開始進行程序記帳:

如果可用空間低於這個百分比值,則停止程序記帳

如果可用空間高於這個百分比值,則開始程序記帳

檢查上面兩個值的頻率(以秒為單位)

要更改這個檔案的某個值,應該回送用空格分隔開的一串數字。

預設設定:2 4 30

如果包含日誌的檔案系統上只有少於 2% 的可用空間,則這些值會使記帳停止,如果有 4% 或更多可用空間,則再次啟動記帳。每 30 秒做一次檢查。

/proc/sys/kernel/ctrl-alt-del

該檔案有乙個二進位制值,該值控制系統在接收到 ctrl+alt+delete 按鍵組合時如何反應。這兩個值表示:

零(0)值表示捕獲 ctrl+alt+delete,並將其送至 init 程式。這將允許系統可以完美地關閉和重啟,就好象您輸入 shutdown 命令一樣。

壹(1)值表示不捕獲 ctrl+alt+delete,將執行非幹

使用 proc檔案系統來控制系統

linux實時管理 使用 proc 檔案系統來控制系統 graham white gwhite at uk.ibm.com it 專家,hursley,ibm 2003 年 8 月 proc 檔案系統是 linux 的優秀特性之一,本文向您詳細講述了它的一些最實用的基礎知識。使用 proc,您再也不...

使用proc檔案系統

以下是核心提供的幾個重要的proc檔案系統介面 1 read proc int read proc char page,char start,off t offset,int count,int eof,void data read proc是proc檔案輸出資訊介面,page是將要寫入資料的緩衝區...

Proc檔案系統

include static struct proc dir entry proc null int read proc char page,char start,off t off,int count,int eof,void data len sprintf page len,debug mod...