|
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)系。 |