free :觀察內存使用情況
系統當中有 2848MB 左右的實體內存,我的 swap 有 1GB 左右, 那我使用free -m 以 MBytes 來顯示時,就會出現上面的信息。Mem 那一行顯示的是實體內存的量,Swap 則是內存交換空間的量。 total 是總量, used 是已被使用的量, free 則是剩余可用的量。 后面的 shared/buffers/cached 則是在已被使用的量當中,用來作為緩沖及高速緩存的量,這些 shared/buffers/cached 的用量中,在系統比較忙碌時, 可以被釋出而繼續利用!因此后面就有一個 available (可用的) 數值。
uname:查閱系統與核心相關信息
uname 可以列出目前系統的核心版本、 主要硬件平臺以及 CPU 類型等等的信息。以上面范例一的狀態來說,我的 Linux 主機使用的核心名稱為Linux,而主機名稱為 study.centos.vbird,核心的版本為 3.10.0-229.el7.x86_64 ,該核心版本創建的日期為 2015-3-6,適用的硬件平臺為 x86_64 以上等級的硬件平臺。
uptime:觀察系統啟動時間與工作負載
顯示出目前系統已經開機多久的時間
netstat :追蹤網絡或插槽檔
基本上, netstat 的輸出分為兩大部分,分別是網絡與系統自己的程序相關性部分:
在上面的結果當中,顯示了兩個部分,分別是網絡的連線以及 linux 上面的 socket 程序相關性部分。 我們先來看看網際網絡連線情況的部分:
Proto :網絡的封包協定,主要分為 TCP 與 UDP 封包
Recv-Q:非由使用者程序鏈接到此 socket 的復制的總 Bytes 數;
Send-Q:非由遠端主機傳送過來的 acknowledged 總 Bytes 數;Local Address :
本地端的 IP:port 情況Foreign Address:
遠端主機的 IP:port 情況State :
連線狀態,主要有創建(ESTABLISED)及監聽(LISTEN);
dmesg :分析核心產生的訊息
系統在開機的時候,核心會去偵測系統的硬件,你的某些硬件到底有沒有被捉到,那就與這個時候的偵測有關。所有核心偵測的訊息,不管是開機時候還是系統運行過程中,反正只要是核心產生的訊息,都會被記錄到內存中的某個保護區段。 dmesg 這個指令就能夠將該區段的訊息讀出來的!因為訊息實在太多了,所以執行時可以加入這個管線指令“ | more ”來使畫面暫停!
vmstat :偵測系統資源變化
vmstat 可以偵測“ CPU / 內存 / 磁盤輸入輸出狀態 ”等等。下面是常見的選項與參數說明:
利用 vmstat 甚至可以進行追蹤,可以使用類似“ vmstat 5 ”代表每五秒鐘更新一次,且無窮的更新!直到你按下 [ctrl]-c 為止。如果你想要實時的知道系統資源的運行狀態,這個指令就不能不知道。基本說明如下:
程序字段 (procs) 的項目分別為: r :等待運行中的程序數量;b:不可被喚醒的程序數量。這兩個項目越多,代表系統越忙碌 (因為系統太忙,所以很多程序就無法被執行或一直在等待而無法被喚醒之故)。
內存字段 (memory) 項目分別為: swpd:虛擬內存被使用的容量; free:未被使用的內存容量; buff:用于緩沖內存; cache:用于高速緩存內存。 這部份則與 free 是相同的。
內存交換空間 (swap) 的項目分別為: si:由磁盤中將程序取出的量; so:由于內存不足而將沒用到的程序寫入到磁盤的 swap 的容量。 如果 si/so 的數值太大,表示內存內的數據常常得在磁盤與內存之間傳來傳去,系統性能會很差!
磁盤讀寫 (io) 的項目分別為: bi:由磁盤讀入的區塊數量; bo:寫入到磁盤去的區塊數量。如果這部份的值越高,代表系統的 I/O 非常忙碌!
系統 (system) 的項目分別為: in:每秒被中斷的程序次數; cs:每秒鐘進行的事件切換次數;這兩個數值越大,代表系統與周邊設備的溝通非常頻繁! 這些周邊設備當然包括磁盤、網卡、時間鐘等。
CPU 的項目分別為: us:非核心層的 CPU 使用狀態; sy:核心層所使用的 CPU 狀態; id:閑置的狀態; wa:等待 I/O 所耗費的 CPU 狀態; st:被虛擬機 (virtualmachine) 所盜用的 CPU 使用狀態 (2.6.11 以后才支持)。