Linux系統(tǒng)運(yùn)維應(yīng)用工具的使用和實(shí)戰(zhàn)
企業(yè) Linux 系統(tǒng)的運(yùn)維成為目前企業(yè)關(guān)注的重點(diǎn)。作為一種優(yōu)秀的開(kāi)源網(wǎng)絡(luò)操作系統(tǒng),如何充分利用 Linux 的工具并使用相應(yīng)的方法來(lái)提高運(yùn)維效率是非常重要的工作。本專題將詳細(xì)介紹幾個(gè)對(duì)系統(tǒng)管理員比較重要的工具和概念,它涵蓋了操作硬盤分區(qū)、如何避免產(chǎn)生問(wèn)題以及如何解決系統(tǒng)問(wèn)題的內(nèi)容,以為企業(yè) Linux 的實(shí)際運(yùn)維提供有益參考。
應(yīng)用工具一:應(yīng)用parted 報(bào)告并分區(qū)硬盤
parted(分區(qū)編輯器)實(shí)用程序從命令行報(bào)告和操作硬盤分區(qū)。palimpsest 實(shí)用程序使用 GUI 執(zhí)行相同的任務(wù)。此外,parted print 命令會(huì)顯示 /dev/sda 驅(qū)動(dòng)器上的分區(qū)信息:
- # parted /dev/sda print
- Model: ATA Hitachi HDS12345 (scsi)
- Disk /dev/sda: 165GB
- Sector size (logical/physical): 512B/512B
- Partition Table: msdos
- Number Start End Size Type File system Flags
- 1 32kB 1045MB 1045MB primary ext4 boot
- 2 1045MB 12GB 10GB primary ext4
- 3 12GB 22GB 10GB primary ext4
- 4 22GB 165GB 143GB extended
- 5 22GB 23GB 1045MB logical linux-swap(v1)
- 6 23GB 41GB 18GB logical ext4
- 7 41GB 82GB 41GB logical ext4
在這個(gè)例子中,parted 顯示的前幾行表示型號(hào)名稱、設(shè)備名稱、設(shè)備容量以及設(shè)備上的分區(qū)表類型。在這些信息之后,print 命令還會(huì)顯示一些列,用戶可以根據(jù)提示來(lái)進(jìn)行操作。
Number 列表示持有該分區(qū)的設(shè)備的次設(shè)備號(hào)。這個(gè)數(shù)字與設(shè)備名稱中的***的數(shù)字相同。在這個(gè)例子中,5 對(duì)應(yīng) /dev/sda5。
Start 列表示分區(qū)開(kāi)始所在的磁盤位置。Parted 實(shí)用程序指定一個(gè)磁盤位置作為從磁盤開(kāi)始到分區(qū)的距離(以字節(jié)為單位)。因此,分區(qū) 3 始自從磁盤開(kāi)始的 12 GB 的位置。
End列表示分區(qū)結(jié)束所在的磁盤位置。雖然分區(qū) 2 結(jié)束自從磁盤開(kāi)始的 12 GB 的位置,分區(qū) 3 始自同一位置,parted 需要注意的是單個(gè)字節(jié)不能在分區(qū)間重疊。
Size列表示分區(qū)以千字節(jié)(KB)、兆字節(jié)(MB)或千兆字節(jié)(GB)為單位的大小。
Type 列表示分區(qū)類型:主、擴(kuò)展或邏輯。參見(jiàn)圖 1 的分區(qū)信息。
File system 列表示文件系統(tǒng)類型:ext2、ext3、ext4、fat32、linux-swap 等等。
Flags 列是分區(qū)打開(kāi)標(biāo)志,包括 boot、raid和 lvm。在這個(gè)例子中,1 號(hào)分區(qū)是引導(dǎo)分區(qū)。
圖 1. 例子中的主分區(qū)和擴(kuò)展分區(qū)
在前面的例子中,分區(qū) 4 定義了一個(gè)擴(kuò)展分區(qū),其中包含 165GB 磁盤中的 143 GB(如圖 1)。使用時(shí)不能更改邏輯分區(qū),否則會(huì)影響其中的所有邏輯分區(qū)。
除了報(bào)告硬盤的布局和大小,還可以采用交互式方式使用 parted 修改磁盤布局。當(dāng)使用這種方式時(shí)要格外小心,開(kāi)始使用此實(shí)用工具之前必需先備份系統(tǒng)。注意更改磁盤上的分區(qū)信息(分區(qū)表)會(huì)破壞磁盤上的信息。請(qǐng)先閱讀 parted 信息頁(yè),然后再嘗試修改分區(qū)表。值得注意的是:錯(cuò)誤的 parted 使用可以摧毀磁盤上的一切數(shù)據(jù)。
使用 parted 要小心,因?yàn)槟闶窃谑褂靡粋€(gè)可以格式化硬盤的實(shí)用程序。使用 parted 所做的更改很容易導(dǎo)致大量數(shù)據(jù)的丟失。如果使用 parted 所做的事情有任何問(wèn)題,在應(yīng)用其更改之前使用 q 命令退出。輸入命令后,parted 會(huì)立即依據(jù)要求進(jìn)行更改。
要對(duì)磁盤進(jìn)行分區(qū)時(shí),在 parted 命令后需要加上要使用的設(shè)備名稱。在下面的例子中,啟動(dòng) parted 后,用戶輸入 help(或只是 h)命令,會(huì)顯示 parted 命令列表:
- # parted /dev/sda
- GNU Parted 2.3
- Using /dev/sda
- Welcome to GNU Parted! Type 'help' to view a list of commands.
- (parted) help
- align-check TYPE N check partition N for TYPE(min|opt) alignment
- check NUMBER do a simple check on the file system
- cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to another partition
- help [COMMAND] print general help, or help on COMMAND
- mklabel,mktable LABEL-TYPE create a new disklabel (partition table)
- mkfs NUMBER FS-TYPE make a FS-TYPE file system on partition NUMBER
- mkpart PART-TYPE [FS-TYPE] START END make a partition
- mkpartfs PART-TYPE FS-TYPE START END make a partition with a file system
- move NUMBER START END move partition NUMBER
- name NUMBER NAME name partition NUMBER as NAME
- print [devices|free|list,all|NUMBER] display the partition table,
- available devices, free ...
- quit exit program
- rescue START END rescue a lost partition near START and END
- resize NUMBER START END resize partition NUMBER and its file system
- rm NUMBER delete partition NUMBER
- select DEVICE choose the device to edit
- set NUMBER FLAG STATE change the FLAG on partition NUMBER
- toggle [NUMBER [FLAG]] toggle the state of FLAG on partition NUMBER
- unit UNIT set the default unit to UNIT
- version display the version number and copyright information of ...
- (parted)
Help 后邊跟上一個(gè) parted 命令參數(shù)的名稱,則會(huì)顯示該命令參數(shù)的更多信息。當(dāng)輸入 print(或只是 p)命令時(shí),parted 顯示當(dāng)前分區(qū)信息,就像命令行上的 print 命令一樣。
parted 實(shí)用程序不允許設(shè)置重疊分區(qū)(除邏輯分區(qū)可以重疊其包含的擴(kuò)展分區(qū)外)。同樣,也不允許創(chuàng)建一個(gè)正好始自磁盤開(kāi)頭(柱面 0)的分區(qū)。這些情況都會(huì)導(dǎo)致數(shù)據(jù)丟失。
定義一個(gè)磁盤分區(qū)表時(shí),要記住一些基本的準(zhǔn)則。首先,不要?jiǎng)h除或修改定義擴(kuò)展分區(qū)的分區(qū),除非你愿意失去擴(kuò)展分區(qū)內(nèi)所有邏輯分區(qū)上的所有數(shù)據(jù)。其次,如果把 /boot 放在單獨(dú)的分區(qū)上,***放在驅(qū)動(dòng)器開(kāi)頭的位置(分區(qū) 1),以便 Linux 可以從位于驅(qū)動(dòng)器最近的分區(qū)引導(dǎo)。當(dāng)磁盤空間的費(fèi)用不是問(wèn)題時(shí),***把每個(gè)主要文件系統(tǒng)放在單獨(dú)的分區(qū)上。許多人選擇把 /(根), /var 和 /usr 合放在一個(gè)單獨(dú)的分區(qū)中,這通常會(huì)節(jié)省空間,但在偶爾情況下也會(huì)導(dǎo)致問(wèn)題。***,雖然 parted 可以創(chuàng)建某些類型的文件系統(tǒng),但 parted 通常是用來(lái)創(chuàng)建分區(qū),然后可使用 mkfs 和 mkswap 在分區(qū)上創(chuàng)建文件系統(tǒng)。
以下命令序列(圖 2)在一個(gè)干凈的磁盤上定義了一個(gè) 300 兆字節(jié)、可引導(dǎo)的 Linux 分區(qū),并將其作為分區(qū) 1:
圖 2. 定義可引導(dǎo) Linux 分區(qū)的命令序列
當(dāng)在 parted 內(nèi)指定大小時(shí),可以使用后綴 k(千字節(jié))、m(兆字節(jié))或 g(千兆字節(jié))。創(chuàng)建分區(qū)后,輸入 print 命令來(lái)查看分區(qū)的結(jié)束位置。執(zhí)行這個(gè)任務(wù)之前要先定義下一個(gè)相鄰的分區(qū),這樣就不會(huì)浪費(fèi)空間。設(shè)置所有分區(qū)后,使用 quit 命令可退出 parted。
接下來(lái),在每個(gè)要包含文件系統(tǒng)(非交換)的分區(qū)上創(chuàng)建文件系統(tǒng)。除非有理由不這樣做,否則除了交換分區(qū)外,請(qǐng)把所有分區(qū)設(shè)置為 ext4 類型。使用 mkswap 可在一個(gè)分區(qū)上設(shè)立一個(gè)交換區(qū)。此外,可以使用 e2label 標(biāo)記一個(gè)分區(qū)。#p#
應(yīng)用工具二:應(yīng)用 logrotate 管理日志文件
你可能想保留日志文件一段時(shí)間,而不是刪除或截?cái)噙@些文件,以防萬(wàn)一需要時(shí)進(jìn)行參考。通過(guò)輪換、壓縮、發(fā)郵件以及刪除指定的每個(gè)文件,logrotate 實(shí)用工具可以自動(dòng)管理系統(tǒng)日志(和其它)文件。logrotate 實(shí)用程序由 /etc/logrotate.conf 文件控制,該文件用于設(shè)置默認(rèn)值,可以指定要輪換的文件。通常情況下,logrotate.conf 包含一個(gè) include 語(yǔ)句,指向?qū)嵱贸绦蛑付ǖ?/etc/logrotate.d 中的規(guī)范文件。以下是默認(rèn)的 logrotate.conf 文件:
- $ cat /etc/logrotate.conf
- # see "man logrotate" for details
- # rotate log files weekly
- weekly
- # keep 4 weeks worth of backlogs
- rotate 4
- # create new (empty) log files after rotating old ones
- create
- # use date as a suffix of the rotated file
- dateext
- # uncomment this if you want your log files compressed
- #compress
- # RPM packages drop log rotation information into this directory
- include /etc/logrotate.d
- # no packages own wtmp and btmp -- we'll rotate them here
- /var/log/wtmp {
- monthly
- create 0664 root utmp
- minsize 1M
- rotate 1
- }
- /var/log/btmp {
- missingok
- monthly
- create 0600 root utmp
- rotate 1
- }
- # system-specific logs may be also be configured here.
logrotate.conf 文件為常用的參數(shù)設(shè)置默認(rèn)值。每當(dāng) logro-tate 讀取這些參數(shù)的另一個(gè)值時(shí),則會(huì)重置默認(rèn)值??梢赃x擇 daily(每天)、weekly(每周)或 monthly(每月)輪換文件。rotate關(guān)鍵字后面的數(shù)字指定要保留的被輪換日志文件數(shù)量。create 關(guān)鍵字會(huì)使 logrotate 創(chuàng)建一個(gè)新的日志文件,并與新輪換的日志文件具有相同的名稱和屬性。dateext 關(guān)鍵字導(dǎo)致 logrotate 使用日期作為文件擴(kuò)展名。compress 關(guān)鍵字(默認(rèn)文件中被注釋掉)導(dǎo)致日志文件由 gzip 壓縮。include 關(guān)鍵字為具體程序的 logrotate 規(guī)范文件指定標(biāo)準(zhǔn) /etc/logrotate.d 目錄。當(dāng)使用 rpm 或基于 rpm 的實(shí)用程序安裝一個(gè)程序時(shí),rpm 把 logrotate 規(guī)范文件放在該目錄中。
logrotate.conf 中的***指令集會(huì)處理 /var/log/wtmp 和 /var/log/btmp 日志文件(wtmp 保存登錄記錄,而 btmp 保存失敗的登錄嘗試記錄);可以查看這些使用 who 的文件。missingok 關(guān)鍵字只覆蓋這個(gè)文件的隱含默認(rèn)值 nomissingok,此關(guān)鍵字導(dǎo)致 logrotate 繼續(xù)運(yùn)行,即使日志文件丟失也不會(huì)發(fā)出錯(cuò)誤消息。關(guān)鍵字 monthly 只覆蓋這個(gè)文件的默認(rèn)值 weekly。create 關(guān)鍵字后面緊跟為新文件建立權(quán)限、所有者和組的參數(shù)。***的 rotate則建立應(yīng)保留的輪換日志文件。
/etc/logrotate.d/httpd 文件是實(shí)用程序 logrotate 規(guī)格文件的一個(gè)例子:
- $ cat /etc/logrotate.d/httpd
- /var/log/httpd/*log {
- missingok
- notifempty
- sharedscripts
- delaycompress
- postrotate
- /sbin/service httpd reload > /dev/null 2>/dev/null || true
- endscript
- }
這個(gè)文件由 httpd 軟件包安裝腳本安裝,通過(guò) logrotate.conf 中的 include 語(yǔ)句放入 /etc/logrotate.d 中,并使用 /var/log/httpd 中文件名以 log (*log) 結(jié)尾的每個(gè)文件。如果日志文件是空的,notifempty 關(guān)鍵字導(dǎo)致 logrotate 不輪換日志文件,而是重寫空的日志文件。sharedscripts 關(guān)鍵字導(dǎo)致 logrotate 僅執(zhí)行一次 prerotate 和 postrotate 節(jié)的命令,而不是為每個(gè)輪換的日志文件執(zhí)行一次。delaycompress 關(guān)鍵字會(huì)導(dǎo)致 logrotate 延遲一個(gè)周期壓縮。copytruncate 關(guān)鍵字沒(méi)有出現(xiàn)在這個(gè)例子中,它會(huì)導(dǎo)致 logrotate 復(fù)制后立即截?cái)嘣瓉?lái)的日志文件,這個(gè)關(guān)鍵字對(duì)于無(wú)法關(guān)閉并重新打開(kāi)日志文件的程序非常有用,因?yàn)檫@些程序可能會(huì)在原始文件已被移動(dòng)的情況下,繼續(xù)寫入原始文件。在輪換開(kāi)始前,logrotate 實(shí)用工具會(huì)執(zhí)行 prerotate 和 endscript 之間的命令。同樣,輪換完成后,會(huì)執(zhí)行 postrotate 和 endscript 之間的命令。
logrotate 實(shí)用工具使用很多關(guān)鍵字,其中許多帶有參數(shù),而且有其它作用。詳細(xì)信息請(qǐng)參閱 logrotate 手冊(cè)頁(yè)。#p#
應(yīng)用工具三:應(yīng)用 rsyslogd 記錄系統(tǒng)消息
傳統(tǒng)上,UNIX 程序會(huì)發(fā)送日志消息到標(biāo)準(zhǔn)錯(cuò)誤。如果需要更***的日志,則會(huì)把輸出重定向到一個(gè)文件。為了克服上述方法的局限性,4.3BSD 引進(jìn)了目前 Linux 使用的系統(tǒng)日志守護(hù)進(jìn)程(rsyslogd; www.rsyslog.com)。這個(gè)守護(hù)進(jìn)程負(fù)責(zé)監(jiān)聽(tīng)日志消息,并把它們存儲(chǔ)在 /var/log 目錄中。除了提供日志記錄功能,rsyslogd 還允許一臺(tái)機(jī)器作為日志庫(kù)服務(wù)于網(wǎng)絡(luò),并允許其它程序來(lái)處理特定的日志消息。
/etc/rsyslog.conf 文件存儲(chǔ) rsyslogd 的配置信息。這個(gè)文件中的每一行都包含一個(gè)或多個(gè)由空格分隔的選擇器(selector)和一個(gè)動(dòng)作(action)。選擇器定義消息的來(lái)源和類型,動(dòng)作(action)則指定 rsyslogd 如何處理消息。rsyslog.conf 示例行如下(# 開(kāi)始一個(gè)注釋):
- # Log all kernel messages to the console.
- kern.* /dev/console
- # Log all the mail messages in one place.
- mail.* /var/log/maillog
- # Log cron stuff
- cron.* /var/log/cron
- # Everybody gets emergency messages
- *.emerg *
- # Save boot messages also to boot.log
- local7.* /var/log/boot.log
選擇器
選擇器分為設(shè)施和優(yōu)先級(jí)兩部分,并由句點(diǎn)分隔。設(shè)施表示消息的來(lái)源。例如 kern 消息來(lái)自內(nèi)核,mail 消息來(lái)自郵件子系統(tǒng)。
圖 3 是 rsyslogd 使用的設(shè)施名稱列表以及生成這些消息的系統(tǒng):
優(yōu)先級(jí)表示消息的嚴(yán)重程度。圖 4 為優(yōu)先級(jí)的名字列表及其所表示的條件,按優(yōu)先級(jí)順序升序列出:
圖 4. 優(yōu)先級(jí)示意
一個(gè)選擇器由單個(gè)設(shè)施和優(yōu)先級(jí)組成,如 kern.info 會(huì)導(dǎo)致相應(yīng)的動(dòng)作應(yīng)用到來(lái)自該設(shè)施具有該優(yōu)先級(jí)或更高優(yōu)先級(jí)(更迫切)的每條消息。使用 .= 指定單個(gè)優(yōu)先級(jí)事項(xiàng) ; 例如,kern.=info 表示把該動(dòng)作應(yīng)用到具有 info 優(yōu)先級(jí)的內(nèi)核消息。一個(gè)驚嘆號(hào)指定一個(gè)不匹配的優(yōu)先級(jí)。因此 kern.!info 將匹配比 info 優(yōu)先級(jí)低的內(nèi)核消息,kern.!=info 匹配非 info 優(yōu)先級(jí)的內(nèi)核消息。
一個(gè)由分號(hào)分隔且包含多個(gè)選擇器的行,只要有匹配的選擇器就執(zhí)行該動(dòng)作,該行每個(gè)選擇器都會(huì)約束該匹配,后續(xù)選擇器通常會(huì)收緊該約束。例如,mail.info;mail.!err 選擇器匹配具有 debug、info、notice 或 warning 優(yōu)先級(jí)的郵件子系統(tǒng)消息。
可以用星號(hào)替換該選擇器的每部分以匹配任何內(nèi)容。該選擇器每部分的 none 關(guān)鍵字表示不可能匹配。*.crit;kern.none 選擇器會(huì)匹配所有關(guān)鍵或更高優(yōu)先級(jí)的消息,來(lái)自內(nèi)核的消息除外。
動(dòng)作
動(dòng)作指定 rsyslogd 如何處理一條匹配該選擇器的消息。最簡(jiǎn)單的動(dòng)作是由其絕對(duì)路徑指定的普通文件,rsyslogd 對(duì)這些文件追加消息。指定 /dev/console 將消息發(fā)送到系統(tǒng)控制臺(tái)。如果想硬拷貝一條消息記錄,需要指定一個(gè)代表專用打印機(jī)的設(shè)備文件。在文件名前面加上一個(gè)連字符(–)以防止將每條消息寫入該文件。這樣做可能會(huì)提高性能,但如果系統(tǒng)崩潰可能會(huì)丟失數(shù)據(jù),以至于產(chǎn)生的消息沒(méi)能來(lái)得及寫入到一個(gè)文件中。
通過(guò)指定一個(gè)或多個(gè)由逗號(hào)分隔的用戶名,可以將重要消息寫入用戶終端。通過(guò)使用一個(gè)星號(hào)可以將非常重要的信息寫入每個(gè)登錄的終端。
要將消息轉(zhuǎn)發(fā)到遠(yuǎn)程系統(tǒng)上的 rsyslogd,通過(guò)在前面加上一個(gè) @(將消息發(fā)送到 UDP 端口 514)或 @@(將消息發(fā)送到 TCP 端口 514)以指定系統(tǒng)的名字或 IP 地址。***將來(lái)自內(nèi)核的關(guān)鍵信息轉(zhuǎn)發(fā)到另一個(gè)系統(tǒng),因?yàn)檫@些消息通常在系統(tǒng)崩潰之前,可能來(lái)不及保存到本地磁盤上。以下 rsyslog.conf 中的行將關(guān)鍵內(nèi)核消息發(fā)送到 plum:
kern.crit @plum |
在遠(yuǎn)程系統(tǒng)上編輯 /etc/rsyslog.conf,以下兩部分命令行是否運(yùn)行,取決于是否要使用 UDP 或 TCP。不要?jiǎng)h除注釋中的哈希標(biāo)記。編輯這個(gè)文件后,使用 rsyslog.service 來(lái)重新啟動(dòng) rsyslogd 守護(hù)進(jìn)程。
- # Provides UDP syslog reception
- #$ModLoad imudp
- #$UDPServerRun 514
- # Provides TCP syslog reception
- #$ModLoad imtcp
- #$InputTCPServerRun 514
#p#
應(yīng)用工具四:掌握系統(tǒng)報(bào)告
許多實(shí)用程序可以對(duì)事項(xiàng)進(jìn)行報(bào)告。例如,who、finger、ls、ps 以及其它實(shí)用程序可以生成簡(jiǎn)單的最終用戶報(bào)告。在某些情況下,這些報(bào)告有助于系統(tǒng)管理。本節(jié)介紹的實(shí)用程序可以產(chǎn)生更多的詳細(xì)報(bào)告,可以為系統(tǒng)管理任務(wù)提供更多的幫助。Linux 還有許多其它報(bào)告實(shí)用程序,比如 sysstat 包中的 sar(系統(tǒng)活動(dòng)報(bào)告)、iostat(輸入 / 輸出和 CPU 統(tǒng)計(jì))和 mpstat(處理器統(tǒng)計(jì)),netstat(網(wǎng)絡(luò)報(bào)告,位于 net-tools 包)和 nfsstat(NFS 統(tǒng)計(jì),位于 nfs-utils 包)。
使用 vmstat 掌握虛擬內(nèi)存統(tǒng)計(jì)信息
vmstat 實(shí)用程序(虛擬內(nèi)存統(tǒng)計(jì),位于 procps 包)生成包含磁盤和 CPU 活動(dòng)數(shù)據(jù)的虛擬內(nèi)存信息。以下示例顯示了每隔 3 秒的 7 個(gè)迭代(參數(shù) 3 7)的虛擬內(nèi)存統(tǒng)計(jì)信息。***行包括自系統(tǒng)啟動(dòng)以來(lái)的時(shí)間,后續(xù)每行包括自上一行以來(lái)的時(shí)間間隔。
- $ vmstat 3 7
- procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
- r b swpd free buff cache si so bi bo in cs us sy id wa
- 0 2 0 684328 33924 219916 0 0 430 105 1052 134 2 4 86 8
- 0 2 0 654632 34160 248840 0 0 4897 7683 1142 237 0 5 0 95
- 0 3 0 623528 34224 279080 0 0 5056 8237 1094 178 0 4 0 95
- 0 2 0 603176 34576 298936 0 0 3416 141 1161 255 0 4 0 96
- 0 2 0 575912 34792 325616 0 0 4516 7267 1147 231 0 4 0 96
- 1 2 0 549032 35164 351464 0 0 4429 77 1120 210 0 4 0 96
- 0 2 0 523432 35448 376376 0 0 4173 6577 1135 234 0 4 0 95
以下列表解釋了由 vmstat 顯示的字段:
- procs 進(jìn)程信息
- r 等待中可運(yùn)行的進(jìn)程數(shù)
- b 阻塞的進(jìn)程數(shù) ( 不間斷睡眠中 )
- memory內(nèi)存信息(以千字節(jié)為單位)
- swpd 使用的虛擬內(nèi)存
- free 空閑內(nèi)存
- buff 用作緩沖區(qū)的內(nèi)存
- cache用作高速緩存的內(nèi)存
- swap系統(tǒng)分頁(yè)活動(dòng)(每秒千字節(jié))
- si 從磁盤交換到內(nèi)存
- so 使內(nèi)存換出到磁盤
- io 系統(tǒng) I/O 活動(dòng)(每秒塊)
- bi 從塊設(shè)備接收的塊
- bo 發(fā)送到塊設(shè)備的塊
- system(單位是每秒)
- in 中斷(包括時(shí)鐘)
- cs 上下文開(kāi)關(guān)
- cpu每個(gè)狀態(tài)所耗費(fèi)的總 CPU 時(shí)間的百分比
- us 用戶 ( 非內(nèi)核 )
- sy 系統(tǒng)(內(nèi)核)
- id 空閑
- wa 等待 I/O
- st 從虛擬機(jī)提取(僅在虛擬機(jī)上)
使用 top 列出使用資源最多的進(jìn)程
top 實(shí)用程序是 ps 的有益補(bǔ)充。最起碼,top 顯示的系統(tǒng)信息包括使用 CPU 密集的進(jìn)程。 top 實(shí)用程序可以定期自我更新,輸入 q 即可退出。雖然可以使用命令行選項(xiàng),但使用交互式命令往往更有幫助。
表 1. top 交互式命令
- $ top
- top - 17:58:53 up 3 days, 4:20, 1 user, load average: 2.16, 1.61, 0.83
- Tasks: 167 total, 5 running, 162 sleeping, 0 stopped, 0 zombie
- Cpu(s): 1.5%us, 0.5%sy, 1.3%ni, 96.0%id, 0.2%wa, 0.6%hi, 0.0%si, 0.0%st
- Mem: 2076092k total, 1990652k used, 85440k free, 18416k buffers
- Swap: 7815580k total, 34908k used, 7780672k free, 1330008k cached
- PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
- 31323 zach 25 0 9020 6960 396 R 63 0.3 0:17.58 bzip2
- 31327 zach 18 0 2092 596 492 R 57 0.0 0:00.92 cp
- 31311 root 15 0 0 0 0 S 16 0.0 0:00.38 pdflush
- 6870 zach 27 12 331m 190m 37m R 2 9.4 198:42.98 firefox-bin
- 31303 root 15 0 0 0 0 S 2 0.0 0:00.42 pdflush
- 1 root 15 0 2912 1808 488 S 0 0.1 0:01.55 init
總結(jié)
本文著重介紹企業(yè) Linux 系統(tǒng)運(yùn)維四個(gè)重要應(yīng)用工具的使用和實(shí)戰(zhàn),在下一篇文章里面,將介紹企業(yè) Linux 系統(tǒng)運(yùn)維的重要原則和方法,給企業(yè)管理員提供有益參考。