機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
實(shí)時(shí)管理 Linux 使用 /proc 文件系統(tǒng)來控制系統(tǒng)
實(shí)時(shí)管理 Linux 使用 /proc 文件系統(tǒng)來控制系統(tǒng)
 更新時(shí)間:2009-8-12 16:54:01  點(diǎn)擊數(shù):0
【字體: 字體顏色
 

proc 文件系統(tǒng)是 Linux 的優(yōu)秀特性之一,本文向您詳細(xì)講述了它的一些最實(shí)用的基礎(chǔ)知識(shí)。使用 /proc,您再也不用關(guān)閉并重新引導(dǎo)機(jī)器來管理操作系統(tǒng)的許多細(xì)節(jié)問題,這對那些要求系統(tǒng)的可用性盡可能高的管理員來說非常有用。

任何管理過具有商業(yè)重要性的系統(tǒng)的人都知道計(jì)算機(jī)正常運(yùn)行時(shí)間的價(jià)值 — 或者反過來講,知道用戶因故障時(shí)間會(huì)給您帶來諸多頭痛問題。公司采用 UNIX  服務(wù)器的主要原因之一是由于它的可靠性和穩(wěn)定性。如果仔細(xì)管理,通常可以很長時(shí)間不需重啟這些服務(wù)器。為了做到盡善盡美,您可以實(shí)時(shí)執(zhí)行一些管理任務(wù),甚至是內(nèi)核這一級別的任務(wù),從而保持服務(wù)器的可用性。雖然因升級硬件或因某人踢掉電源線而仍需要重啟系統(tǒng),但了解到許多管理任務(wù)可以在不干擾服務(wù)的情況下執(zhí)行,總是有益的。

本文提供了不需要重新引導(dǎo)就能夠執(zhí)行關(guān)于各種管理任務(wù)和更改系統(tǒng)的提示和技巧。Linux 提供了各種方法,用以在保持系統(tǒng)正常運(yùn)行的情況下,更改底層操作系統(tǒng)的值和設(shè)置。這些方法有兩種基本形式,一種形式對于所有 Linux 系統(tǒng)都是通用的,并在  Linux 內(nèi)核中提供這一形式(您可以在 Linux Kernel Archives 上查找更多關(guān)于 Linux 內(nèi)核的信息和下載內(nèi)核源代碼;請參閱參考資料,里面有至 Linux Kernel Archives 的鏈接),還有一種形式是各分發(fā)版所獨(dú)有的,并且由供應(yīng)商提供。本文將討論這兩種方法。

更改運(yùn)行中的內(nèi)核的參數(shù)
Linux 向管理員提供了非常好的方法,使他們可以在系統(tǒng)運(yùn)行時(shí)更改內(nèi)核,而不需要重新引導(dǎo)內(nèi)核/系統(tǒng)。這是通過 /proc 虛擬文件系統(tǒng)實(shí)現(xiàn)的。Linux Gazette 給出了一份有關(guān) /proc 的參考,它是我所看到過的最簡單且最容易的參考之一。(請參閱參考資料,其中有至這篇文章的鏈接。)/proc 文件系統(tǒng)主要可以讓您查看運(yùn)行中的內(nèi)核,這一點(diǎn)對于監(jiān)控性能、查找系統(tǒng)信息、了解系統(tǒng)是如何配置的以及更改該配置很有用。該文件系統(tǒng)被稱為虛擬文件系統(tǒng),因?yàn)樗鼘?shí)際上根本不是一個(gè)文件系統(tǒng)。它只是內(nèi)核提供的一個(gè)映射,被附加在通常的文件系統(tǒng)結(jié)構(gòu)之上,從而使您能夠訪問它。

我們可以采用某種方法在系統(tǒng)正常運(yùn)行的同時(shí)更改運(yùn)行中的內(nèi)核的參數(shù),這一事實(shí)賦予了系統(tǒng)管理員在更改內(nèi)核設(shè)置方面強(qiáng)大的能力和高的靈活性。這種實(shí)現(xiàn)是出自部分 Linux 內(nèi)核開發(fā)人員富有靈感的想法。但能力太大會(huì)是一件壞事嗎?有時(shí)確實(shí)如此。如果準(zhǔn)備更改 /proc 文件系統(tǒng)中的任何內(nèi)容,您必須確保自己知道在更改什么以及這會(huì)對系統(tǒng)產(chǎn)生什么影響。這些技術(shù)確實(shí)有用,但錯(cuò)誤的舉動(dòng)會(huì)帶來完全不希望得到的結(jié)果。如果您不熟悉這方面的內(nèi)容,或者不確定您所做的某項(xiàng)更改會(huì)帶來什么影響,那么請?jiān)谝慌_(tái)對您或您公司不重要的機(jī)器上進(jìn)行實(shí)踐。

如何更改
首先,考慮怎樣做不會(huì)對內(nèi)核進(jìn)行更改。有兩條充分的理由說明了為什么不能直接切換至 /proc 文件系統(tǒng),用文本編輯器打開一個(gè)文件,做一系列更改,然后保存該文件,再退出。這兩條理由是: 
數(shù)據(jù)完整性:所有這些文件描述了運(yùn)行中的系統(tǒng),由于內(nèi)核可以隨時(shí)更改這些文件中的任何一個(gè),因此如果打開一個(gè)編輯器,然后更改某些數(shù)據(jù),而同時(shí),系統(tǒng)也正在底層更改這些數(shù)據(jù),那么無論您保存下來的任何內(nèi)容都不可能是內(nèi)核所期望的內(nèi)容。
虛擬文件:所有這些文件實(shí)際上都不存在。如何使保存的數(shù)據(jù)同步,等等?

所以,解決辦法是,不使用編輯器來更改任何這些文件。每當(dāng)更改 /proc 文件系統(tǒng)中的任何內(nèi)容時(shí),應(yīng)該使用 echo 命令,然后從命令行將輸出重定向至 /proc 下所選定的文件中。例如:

echo "Your-New-Kernel-Value" > /proc/your/file

類似的,如果希望查看 /proc 中的信息,應(yīng)該使用專門用于此用途的命令,或者使用命令行下的 cat 命令。

更改什么
要很好地使用 /proc 不需要您是一位內(nèi)核方面的高手,只需基本了解這個(gè)文件系統(tǒng)的結(jié)構(gòu)就可以極大地幫助您。直到有一天用戶向您詢問某些特定的功能,使您很高興曾下功夫了解過在哪里進(jìn)行更改,您才可能會(huì)覺得有必要知道關(guān)于 /proc 中的任何事情。在這方面,/proc 文件系統(tǒng)通過其結(jié)構(gòu)和文件許可權(quán)幫助系統(tǒng)管理員。

/proc 中的每個(gè)文件都有一組分配給它的非常特殊的文件許可權(quán),并且每個(gè)文件屬于特定的用戶標(biāo)識(shí)。這一點(diǎn)實(shí)現(xiàn)得非常仔細(xì),從而提供給管理員和用戶正確的功能。下面這個(gè)列表匯總了各個(gè)文件上有哪些特定的許可權(quán): 
只讀:任何用戶都不能更改該文件;它用于表示系統(tǒng)信息
root 寫:如果 /proc 中的某個(gè)文件是可寫的,則通常只能由 root 用戶來寫
root 讀:有些文件對一般系統(tǒng)用戶是不可見的,而只對 root 用戶是可見的
其它:出于各種原因,您可能會(huì)看到不同于上面常見的三種許可權(quán)的組合

關(guān)于 /proc,您會(huì)發(fā)現(xiàn)最通常的情況是,它的大多數(shù)文件是只讀的,除了 /proc/sys 目錄。該目錄下存放著大多數(shù)的內(nèi)核參數(shù)(而不是信息),并且設(shè)計(jì)成可以在系統(tǒng)運(yùn)行的同時(shí)進(jìn)行更改。因此這個(gè)目錄是本文的主旨所在。

就更改 /proc 中什么內(nèi)容而言,要了解的最后一點(diǎn)是,應(yīng)該向這些文件實(shí)際寫些什么。當(dāng)查看 /proc 中各種文件時(shí),會(huì)發(fā)現(xiàn)其中一些文件對我們來說是可讀的,一些文件是數(shù)據(jù)文件。通過用特定的實(shí)用程序(譬如 top、lspci 和 free),這些數(shù)據(jù)文件仍然也可讀。您還會(huì)注意到,對我們來說可讀文件有兩種不同格式:一些是二進(jìn)制開關(guān),另一些包含其它信息。二進(jìn)制開關(guān)文件只包含代表特定內(nèi)核功能的 0(關(guān))或 1(開)。

進(jìn)行更改
詳細(xì)介紹有關(guān) /proc 中每個(gè)文件的用法和確切信息超出了本文所涉及的范圍。要獲得任何關(guān)于本文沒有涉及到的 /proc 文件的其它信息,一個(gè)最佳來源就是 Linux 內(nèi)核源代碼本身,它包含了一些非常優(yōu)秀的文檔。對于系統(tǒng)管理員,/proc 中的以下文件較有用。這不意味著它是一份詳盡的說明,而只是日常使用中便于查閱的參考。

/proc/scsi
/proc/scsi/scsi
作為系統(tǒng)管理員,需要了解的最有用內(nèi)容是,在有熱交換驅(qū)動(dòng)器情況下,如何不重啟系統(tǒng)就可以添加更多磁盤空間。假使不使用 /proc,您可以插入驅(qū)動(dòng)器,但為了使系統(tǒng)識(shí)別新磁盤,必須隨即重新引導(dǎo)系統(tǒng)。這里,可以用以下命令來使系統(tǒng)識(shí)別新的驅(qū)動(dòng)器:

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

為使該命令正常運(yùn)行,必須指定正確的參數(shù)值 w、x、y 和 z,如下所示: 
w 是主機(jī)適配器標(biāo)識(shí),第一個(gè)適配器為零(0)
x 是主機(jī)適配器上的 SCSI 通道,第一個(gè)通道為零(0)
y 是設(shè)備的 SCSI 標(biāo)識(shí)
z 是 LUN 號(hào),第一個(gè) LUN 為零(0)

一旦將磁盤添加到系統(tǒng)中之后,可以掛裝任何先前已格式化的文件系統(tǒng),也可以開始對它進(jìn)行格式化等。例如,如果不確定磁盤是什么設(shè)備,或者想檢查任何先前已有的分區(qū),則可以用如 fdisk -l 這樣的命令來向您報(bào)告這方面的信息。

相反的,在不重新引導(dǎo)系統(tǒng)的情況下將設(shè)備從系統(tǒng)中除去的命令是:

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

在輸入這條命令并將熱交換 SCSI 磁盤從系統(tǒng)中除去之前,請確保首先卸下已從該磁盤安裝的任何文件系統(tǒng)。

/proc/sys/fs/
/proc/sys/fs/file-max
該文件指定了可以分配的文件句柄的最大數(shù)目。如果用戶得到的錯(cuò)誤消息聲明由于打開文件數(shù)已經(jīng)達(dá)到了最大值,從而他們不能打開更多文件,則可能需要增加該值?蓪⑦@個(gè)值設(shè)置成有任意多個(gè)文件,并且能通過將一個(gè)新數(shù)字值寫入該文件來更改該值。

缺省設(shè)置:4096

/proc/sys/fs/file-nr
該文件與 file-max 相關(guān),它有三個(gè)值: 
已分配文件句柄的數(shù)目
已使用文件句柄的數(shù)目
文件句柄的最大數(shù)目
該文件是只讀的,僅用于顯示信息。

/proc/sys/fs/inode-*
任何以名稱"inode"開頭的文件所執(zhí)行的操作與上面那些以名稱"file"開頭的文件所執(zhí)行的操作一樣,但所執(zhí)行的操作與索引節(jié)點(diǎn)有關(guān),而與文件句柄無關(guān)。

/proc/sys/fs/overflowuid 和 /proc/sys/fs/overflowgid
這兩個(gè)文件分別保存那些支持 16 位用戶標(biāo)識(shí)和組標(biāo)識(shí)的任何文件系統(tǒng)的用戶標(biāo)識(shí)(UID)和組標(biāo)識(shí)(GID)?梢愿倪@些值,但如果您確實(shí)覺得需要這樣做,那么您可能會(huì)發(fā)現(xiàn)更改組和密碼文件項(xiàng)更容易些。

缺省設(shè)置:65534

/proc/sys/fs/super-max
該文件指定超級塊處理程序的最大數(shù)目。掛裝的任何文件系統(tǒng)需要使用超級塊,所以如果掛裝了大量文件系統(tǒng),則可能會(huì)用盡超級塊處理程序。

缺省設(shè)置:256

/proc/sys/fs/super-nr
該文件顯示當(dāng)前已分配超級塊的數(shù)目。該文件是只讀的,僅用于顯示信息。

/proc/sys/kernel
/proc/sys/kernel/acct
該文件有三個(gè)可配置值,根據(jù)包含日志的文件系統(tǒng)上可用空間的數(shù)量(以百分比表示),這些值控制何時(shí)開始進(jìn)行進(jìn)程記帳: 
如果可用空間低于這個(gè)百分比值,則停止進(jìn)程記帳
如果可用空間高于這個(gè)百分比值,則開始進(jìn)程記帳
檢查上面兩個(gè)值的頻率(以秒為單位)
要更改這個(gè)文件的某個(gè)值,應(yīng)該回送用空格分隔開的一串?dāng)?shù)字。

缺省設(shè)置:2 4 30

如果包含日志的文件系統(tǒng)上只有少于 2% 的可用空間,則這些值會(huì)使記帳停止,如果有 4% 或更多可用空間,則再次啟動(dòng)記帳。每 30 秒做一次檢查。

/proc/sys/kernel/ctrl-alt-del
該文件有一個(gè)二進(jìn)制值,該值控制系統(tǒng)在接收到 ctrl+alt+delete 按鍵組合時(shí)如何反應(yīng)。這兩個(gè)值表示: 
零(0)值表示捕獲 ctrl+alt+delete,并將其送至 init 程序。這將允許系統(tǒng)可以完美地關(guān)閉和重啟,就好象您輸入 shutdown 命令一樣。
壹(1)值表示不捕獲 ctrl+alt+delete,將執(zhí)行非干凈的關(guān)閉,就好象直接關(guān)閉電源一樣。

缺省設(shè)置:0

/proc/sys/kernel/domainname
該文件允許您配置網(wǎng)絡(luò)域名。它沒有缺省值,也許已經(jīng)設(shè)置了域名,也許沒有設(shè)置。

/proc/sys/kernel/hostname
該文件允許您配置網(wǎng)絡(luò)主機(jī)名。它沒有缺省值,也許已經(jīng)設(shè)置了主機(jī)名,也許沒有設(shè)置。

/proc/sys/kernel/msgmax
該文件指定了從一個(gè)進(jìn)程發(fā)送到另一個(gè)進(jìn)程的消息的最大長度。進(jìn)程間的消息傳遞是在內(nèi)核的內(nèi)存中進(jìn)行,不會(huì)交換到磁盤上,所以如果增加該值,則將增加操作系統(tǒng)所使用的內(nèi)存數(shù)量。

缺省設(shè)置:8192

/proc/sys/kernel/msgmnb
該文件指定在一個(gè)消息隊(duì)列中最大的字節(jié)數(shù)。

缺省設(shè)置:16384

/proc/sys/kernel/msgmni
該文件指定消息隊(duì)列標(biāo)識(shí)的最大數(shù)目。

缺省設(shè)置:16

/proc/sys/kernel/panic
該文件表示如果發(fā)生"內(nèi)核嚴(yán)重錯(cuò)誤(kernel panic)",則內(nèi)核在重新引導(dǎo)之前等待的時(shí)間(以秒為單位)。零(0)秒設(shè)置在發(fā)生內(nèi)核嚴(yán)重錯(cuò)誤時(shí)將禁止重新引導(dǎo)。

缺省設(shè)置:0

/proc/sys/kernel/printk
該文件有四個(gè)數(shù)字值,它們根據(jù)日志記錄消息的重要性,定義將其發(fā)送到何處。關(guān)于不同日志級別的更多信息,請閱讀 syslog(2) 聯(lián)機(jī)幫助頁。該文件的四個(gè)值為: 
控制臺(tái)日志級別:優(yōu)先級高于該值的消息將被打印至控制臺(tái)
缺省的消息日志級別:將用該優(yōu)先級來打印沒有優(yōu)先級的消息
最低的控制臺(tái)日志級別:控制臺(tái)日志級別可被設(shè)置的最小值(最高優(yōu)先級)
缺省的控制臺(tái)日志級別:控制臺(tái)日志級別的缺省值

缺省設(shè)置:6 4 1 7

/proc/sys/kernel/shmall
該文件是在任何給定時(shí)刻系統(tǒng)上可以使用的共享內(nèi)存的總量(以字節(jié)為單位)。

缺省設(shè)置:2097152

/proc/sys/kernel/shmax
該文件指定內(nèi)核所允許的最大共享內(nèi)存段的大。ㄒ宰止(jié)為單位)。

缺省設(shè)置:33554432

/proc/sys/kernel/shmmni
該文件表示用于整個(gè)系統(tǒng)共享內(nèi)存段的最大數(shù)目。

缺省設(shè)置:4096

/proc/sys/kernel/sysrq
如果該文件指定的值為非零,則激活 System Request Key。

缺省設(shè)置:0

/proc/sys/kernel/threads-max
該文件指定內(nèi)核所能使用的線程的最大數(shù)目。

缺省設(shè)置:2048

/proc/sys/net
/proc/sys/net/core/message_burst
寫新的警告消息所需的時(shí)間(以 1/10 秒為單位);在這個(gè)時(shí)間內(nèi)所接收到的其它警告消息會(huì)被丟棄。這用于防止某些企圖用消息"淹沒"您系統(tǒng)的人所使用的拒絕服務(wù)(Denial of Service)攻擊。

缺省設(shè)置:50(5 秒)

/proc/sys/net/core/message_cost
該文件存有與每個(gè)警告消息相關(guān)的成本值。該值越大,越有可能忽略警告消息。

缺省設(shè)置:5

/proc/sys/net/core/netdev_max_backlog
該文件指定了,在接口接收數(shù)據(jù)包的速率比內(nèi)核處理這些包的速率快時(shí),允許送到隊(duì)列的數(shù)據(jù)包的最大數(shù)目。

缺省設(shè)置:300

/proc/sys/net/core/optmem_max
該文件指定了每個(gè)套接字所允許的最大緩沖區(qū)的大小。

/proc/sys/net/core/rmem_default
該文件指定了接收套接字緩沖區(qū)大小的缺省值(以字節(jié)為單位)。

/proc/sys/net/core/rmem_max
該文件指定了接收套接字緩沖區(qū)大小的最大值(以字節(jié)為單位)。

/proc/sys/net/core/wmem_default
該文件指定了發(fā)送套接字緩沖區(qū)大小的缺省值(以字節(jié)為單位)。

/proc/sys/net/core/wmem_max
該文件指定了發(fā)送套接字緩沖區(qū)大小的最大值(以字節(jié)為單位)。

/proc/sys/net/ipv4
所有 IPv4 和 IPv6 的參數(shù)都被記錄在內(nèi)核源代碼文檔中。請參閱文件 /usr/src/linux/Documentation/networking/ip-sysctl.txt。

/proc/sys/net/ipv6
同 IPv4。

/proc/sys/vm
/proc/sys/vm/buffermem
該文件控制用于緩沖區(qū)內(nèi)存的整個(gè)系統(tǒng)內(nèi)存的數(shù)量(以百分比表示)。它有三個(gè)值,通過把用空格相隔的一串?dāng)?shù)字寫入該文件來設(shè)置這三個(gè)值。 
用于緩沖區(qū)的內(nèi)存的最低百分比
如果發(fā)生所剩系統(tǒng)內(nèi)存不多,而且系統(tǒng)內(nèi)存正在減少這種情況,系統(tǒng)將試圖維護(hù)緩沖區(qū)內(nèi)存的數(shù)量。
用于緩沖區(qū)的內(nèi)存的最高百分比

缺省設(shè)置:2 10 60

/proc/sys/vm/freepages
該文件控制系統(tǒng)如何應(yīng)對各種級別的可用內(nèi)存。它有三個(gè)值,通過把用空格相隔的一串?dāng)?shù)字寫入該文件來設(shè)置這三個(gè)值。 
如果系統(tǒng)中可用頁面的數(shù)目達(dá)到了最低限制,則只允許內(nèi)核分配一些內(nèi)存。
如果系統(tǒng)中可用頁面的數(shù)目低于這一限制,則內(nèi)核將以較積極的方式啟動(dòng)交換,以釋放內(nèi)存,從而維持系統(tǒng)性能。
內(nèi)核將試圖保持這個(gè)數(shù)量的系統(tǒng)內(nèi)存可用。低于這個(gè)值將啟動(dòng)內(nèi)核交換。

缺省設(shè)置:512 768 1024

/proc/sys/vm/kswapd
該文件控制允許內(nèi)核如何交換內(nèi)存。它有三個(gè)值,通過把用空格相隔的一串?dāng)?shù)字寫入該文件來設(shè)置這三個(gè)值: 
內(nèi)核試圖一次釋放的最大頁面數(shù)目。如果想增加內(nèi)存交換過程中的帶寬,則需要增加該值。
內(nèi)核在每次交換中試圖釋放頁面的最少次數(shù)。
內(nèi)核在一次交換中所寫頁面的數(shù)目。這對系統(tǒng)性能影響最大。這個(gè)值越大,交換的數(shù)據(jù)越多,花在磁盤尋道上的時(shí)間越少。然而,這個(gè)值太大會(huì)因"淹沒"請求隊(duì)列而反過來影響系統(tǒng)性能。

缺省設(shè)置:512 32 8

/proc/sys/vm/pagecache
該文件與 /proc/sys/vm/buffermem 的工作內(nèi)容一樣,但它是針對文件的內(nèi)存映射和一般高速緩存。

使內(nèi)核設(shè)置具有持久性
這里提供了一個(gè)方便的實(shí)用程序,用于更改 /proc/sys 目錄下的任何內(nèi)核參數(shù)。它使您可以更改運(yùn)行中的內(nèi)核(類似于上面用到的 echo 和重定向方法),但它還有一個(gè)在系統(tǒng)引導(dǎo)時(shí)執(zhí)行的配置文件。這使您可以更改運(yùn)行中的內(nèi)核,并將這些更改添加到配置文件,以便于在系統(tǒng)重新引導(dǎo)之后,這些更改仍然生效。

該實(shí)用程序稱為 sysctl,在 sysctl(8) 的聯(lián)機(jī)幫助頁中,對這個(gè)實(shí)用程序進(jìn)行了完整的文檔說明。sysctl  的配置文件是 /etc/sysctl.conf,可以編輯該文件,并在 sysctl.conf(8) 下記錄了該文件。sysctl 將  /proc/sys 下的文件視為可以更改的單個(gè)變量。所以,以 /proc/sys 下的文件 /proc/sys/fs/file-max 為例,它表示系統(tǒng)中所允許的文件句柄的最大數(shù)目,這個(gè)文件被表示成 fs.file-max。

這個(gè)示例揭示了 sysctl 表示法中的一些奇妙事情。由于 sysctl 只能更改 /proc/sys 目錄下的變量,并且人們始終認(rèn)為變量是在這個(gè)目錄下,因此省略了變量名的那一部分(/proc/sys)。另一個(gè)要說明的更改是,將目錄分隔符(正斜杠 /)換成了英文中的句號(hào)(點(diǎn) .)。

將 /proc/sys 中的文件轉(zhuǎn)換成 sysctl 中的變量有兩個(gè)簡單的規(guī)則: 
去掉前面部分 /proc/sys。
將文件名中的正斜杠變?yōu)辄c(diǎn)。

這兩條規(guī)則使您能將 /proc/sys 中的任一文件名轉(zhuǎn)換成 sysctl 中的任一變量名。一般文件到變量的轉(zhuǎn)換為:

/proc/sys/dir/file --> dir.file
dir1.dir2.file --> /proc/sys/dir1/dir2/file

可以使用命令 sysctl -a 查看所有可以更改的變量和其當(dāng)前設(shè)置。

用 sysctl 還可以更改變量,它所做的工作與上面所用的 echo 方法完全一樣。其表示法為:

sysctl -w dir.file="value"

還是用 file-max 作為示例,使用下面兩種方法中的一種將該值更改為 16384:

sysctl -w fs.file-max="16384"

或者:

echo "16384" > /proc/sys/fs/file-max

不要忘記 sysctl 不會(huì)將所做的更改添加到配置文件中;這要您用手工來完成。如果您希望在重新引導(dǎo)之后,前面所做的更改仍然有效,則必須維護(hù)這個(gè)配置文件。

注:不是所有的分發(fā)版都提供 sysctl 支持。如果您的特定系統(tǒng)屬于這種情況,則可以用上面所描述的 echo 和重定向方法,將這些命令添加到啟動(dòng)腳本中,這樣系統(tǒng)每次引導(dǎo)時(shí),都會(huì)執(zhí)行它們。

用于設(shè)置系統(tǒng)的命令
在系統(tǒng)運(yùn)行的同時(shí)更改其它非內(nèi)核系統(tǒng)參數(shù),而且在不重新引導(dǎo)系統(tǒng)的情況下使這些設(shè)置生效,這種做法是可能的。在 /etc/init.d 目錄中列出了包含這些參數(shù)的文件,它們主要按服務(wù)、守護(hù)程序和服務(wù)器來分類。由于越來越多各方面的腳本可以羅列在這個(gè)目錄下,所以這里不可能討論所有各種配置。不過,下面列舉了一些示例,這些示例討論了如何在不同的 Linux 分發(fā)版上操作 /etc/init.d 下的腳本。這里的示例可能很有用,其中討論了更改守護(hù)程序,然后在不重新引導(dǎo)系統(tǒng)的情形下重新裝入配置: 
更改 Web 服務(wù)器配置,然后重新裝入 Apache
除去不需要的 inetd 登錄服務(wù)
操作網(wǎng)絡(luò)設(shè)置
通過 NFS 導(dǎo)出新的文件系統(tǒng)
啟動(dòng)/停止防火墻

首先,常見的方法是,直接通過 /etc/init.d 中的腳本來操作系統(tǒng)服務(wù)。這些腳本用參數(shù)來操作它們所控制的服務(wù);可以通過輸入腳本名但不帶任何參數(shù)這種方法來查看有哪些有效的選項(xiàng)。常見的參數(shù)有: 
start:啟動(dòng)已停止的服務(wù)
stop:停止正在運(yùn)行的服務(wù)
restart:停止正在運(yùn)行的服務(wù),然后再重啟該服務(wù);它將啟動(dòng)已停止的服務(wù)
reload:在不中斷任何連接的情況下,重新裝入服務(wù)配置
status:報(bào)告服務(wù)處于運(yùn)行狀態(tài),還是停止?fàn)顟B(tài)

例如,下面這條命令將在不終止任何已連接的用戶會(huì)話的情形下,重新裝入 xinetd 配置(如果您更改了 /etc/xinetd.conf,那么這條命令很有用):

/etc/init.d/xinetd reload

Red Hat 提供了 service 這條命令,它可以為您操作服務(wù)。service 命令提供的功能與輸入腳本名本身的功能一樣。它的語法如下所示:

service script-name [parameter]

例如:

service xinetd reload

SuSE 也提供名為 rc 的命令。該命令類似于上面的 service 命令,但該命令與腳本名之間沒有空格。它的語法如下所示:

rc{script-name} parameter

例如:

rcapache start

與更改內(nèi)核參數(shù)類似,一旦重新引導(dǎo)系統(tǒng),則對這些服務(wù)的更改將會(huì)丟失,F(xiàn)在越來越多的分發(fā)版開始采用 chkconfig 命令,它管理在各種運(yùn)行級別下(包括引導(dǎo)時(shí))啟動(dòng)的服務(wù)。在撰寫本文時(shí),chkconfig 命令的語法會(huì)因 Linux 版本的不同而略有差異,不過如果輸入不帶任何參數(shù)的命令  chkconfig,則會(huì)顯示一個(gè)如何使用該命令的列表。也可以通過 chkconfig(8) 的聯(lián)機(jī)幫助頁找到更多有關(guān) chkconfig 的信息。

結(jié)束語
使用 /proc 文件系統(tǒng)實(shí)時(shí)配置 Linux 內(nèi)核不是一件輕松的事情,然而一旦了解了該文件系統(tǒng)的結(jié)構(gòu),以及掌握了如何操作各種文件和參數(shù),則您就擁有了一個(gè)功能強(qiáng)大的工具,使您的服務(wù)器在任何時(shí)候都可用。

致謝
我十分感謝 Adrian Fewings 先生對本文的校對。

參考資料 
在 Linux Kernel Archives 網(wǎng)頁上下載 Linux 內(nèi)核,或者參與有關(guān) Linux 內(nèi)核方面的事情,或者僅僅了解 Linux 內(nèi)核方面的信息。


請參閱安裝內(nèi)核源代碼的"Documentation"目錄中有關(guān)內(nèi)核的文檔。


了解來自 Linux Gazette 的關(guān)于 /proc 虛擬文件系統(tǒng)的更多信息。


請閱讀 sysctl(8) 和 sysctl.conf(8) 的聯(lián)機(jī)幫助頁。


在 Linux Documentation Project 主頁上,可以找到更多 Linux 文檔。


有關(guān)硬件問題方面的故障診斷指南,請閱讀" Linux 硬件穩(wěn)定性指南,第 1 部分 "(developerWorks,2001 年 3 月)和"Linux 硬件穩(wěn)定性指南,第 2 部分"(developerWorks,2001 年 7 月)。


"理解 Linux 配置文件"(developerWorks,2001 年 12 月)概述了控制許可權(quán)、系統(tǒng)應(yīng)用程序、守護(hù)程序和其它方面的配置文件。


"配置和編譯內(nèi)核"(developerWorks,2002 年 5 月)這篇文章一步一步地向您講述了從源代碼編譯 Linux 內(nèi)核的基本任務(wù)。


如果您想了解,"高可用性"對于大型機(jī)意味著什么,則請閱讀 IBM Redpaper"Linux on IBM zSeries and S/390: High Availability for z/VM and Linux"。


在 developerWorks Linux 專區(qū)查找更多有關(guān)針對 Linux 開發(fā)者的參考資料。


關(guān)于作者

Graham  于 2000 年 7 月獲得了 Exeter 大學(xué)計(jì)算機(jī)科學(xué)和管理科學(xué)的理學(xué)士學(xué)位(榮譽(yù))。在毫無一點(diǎn)經(jīng)驗(yàn)的情況下,他于 2000 年 9 月加入了 IBM,從事 IT 支持工作,并且開始學(xué)習(xí) Linux。一年后,于 2001 年 9 月,他獲得了 Red Hat 認(rèn)證工程師。他所從事的工作和個(gè)人愛好使他具備了在各個(gè)平臺(tái)上運(yùn)行各種版本的 Linux 的經(jīng)歷,來支持 IBM 位于英國的 Hursley Laboratory 的開發(fā)社區(qū)。最近,他已經(jīng)撰寫了一些關(guān)于 Linux 方面的文章,他的第一部也是唯一的一部出版物被收錄在  Linux Documentation Project 的指南中?梢酝ㄟ^ gwhite at uk.ibm.com 與 Graham 聯(lián)系。

  • 上一篇: Linux服務(wù)器的一些基本應(yīng)用
  • 下一篇: SPARC中如何安裝Linux系統(tǒng)
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1