1. 程式人生 > >io、free、ps 命令

io、free、ps 命令

io、free、ps 命令

技術分享圖片

1、監控 io 性能

這個 iostat 命令,在安裝 sar 命令的時候,就一起安裝了,所以不用重新安裝。具體用法見下圖,
技術分享圖片
iostat 命令和 vmstat 挺像的,輸入 iostat 可以直接查看磁盤顯示情況,輸入 iostat 1 就是每隔1秒顯示一次,是動態命令,使用 ctrl + c 結束命令。sda 和 sdb 表示磁盤,第3 列和第4 列表示讀和寫的速度。這個命令沒什麽用處,因為命令 sar -b 也可以看出這些信息。
技術分享圖片
接著往下介紹命令 iostat -x 1,見下圖,
技術分享圖片
這個命令有一個非常重要的指標 %util ,表示 io 等待,在統計時間內所有處理IO時間,除以總共統計時間。例如,如果統計間隔1秒,該設備有0.8秒在處理IO,而0.2秒閑置,那麽該設備的%util = 0.8/1 = 80%,所以該參數暗示了設備的繁忙程度。一般地,如果該參數是100%表示設備已經接近滿負荷運行了(當然如果是多磁盤,即使%util是100%,因為磁盤的並發能力,所以磁盤使用未必就到了瓶頸)。

還有一個命令 iotop ,需要安裝,見下圖,
技術分享圖片
技術分享圖片
iotop 命令和 top 命令很像,也是動態顯示,輸入命令 iotop ,回車,見下圖,
技術分享圖片
可以看到排序,但是 io 沒有什麽讀寫信息,也就沒有什麽排序。按字母 q 退出。

2、free 命令

直接查看內存使用狀況。輸入 free ,回車,見下圖,
技術分享圖片
可以看到當前系統的總內存大小以及使用內存的情況,單純的 free 命令單位是 KB ,-m 選項的單位是 M ,-g 選項的單位是 G,-h 選項是智能的顯示單位。其中,第2行是內存使用情況,第3行是 swap的使用情況。我們關註的是第2行的數據,從上例中可看到當前系統內存總大小為999936 KB,已經使用118532 KB,剩余578680 KB,共享6832 KB。 系統初始化時,就已經分配出很大一部分內存給緩存(buff/cache),這部分緩存用來隨時提供給程序使用,如果程序不用,那這部分內存就空閑。CPU 和磁盤之間,需要通過內存來緩存。從磁盤到CPU之間的內存叫 cache ,從CPU到磁盤之間的內存叫 buffer。

公式:total=used+free+buff/cache。
avaliable包含free和buffer/cache剩余部分。

3、ps 命令

技術分享圖片

作為系統管理員,一定要知道你所管理的系統都有那些進程在運行,在windows下只要打開任務管理器即可查看。在linux下呢?其實在上面介紹的top命令就可以,但是不容易看,還有專門顯示系統進程的命令 ps ,靜態顯示出來進程情況。
先輸入命令 man ps ,回車,來查看一下 ps 的功能,見下圖,
技術分享圖片
可以看到 ps 的作用是報告當前流程的快照。
接著來看一下 ps 的用法,見下圖,
技術分享圖片
技術分享圖片
技術分享圖片
ps aux 命令顯示當前系統的所有進程,它經常會連同管道符一起使用,用來查看某個進程或者它的數量,見下圖,

技術分享圖片
ps 還有一種用法,見下圖,
技術分享圖片
-elf 的用法和 aux 大同小異,顯示的信息基本上是一樣的,不一一截圖了。這兩種方法就是看個人喜好。
接著介紹 ps aux 命令結果裏面幾個參數的意義:
USER:進程的運行用戶
PID :進程的id,這個id很有用,在linux中內核管理進程就得靠pid來識別和管理某一個程序,比如我想終止某一個進程,則用 kill 進程的pid 有時並不能殺掉,則需要加一個-9選項了 kill -9 進程pid
現在假設 PID 為509的進程是非法進程,先查看一下進程的目錄,看看進程是從哪邊啟動起來的,就是下圖紅色框框綠色字體的內容。
技術分享圖片
%CPU CPU百分比
%MEM 內存百分比
VSZ 虛擬內存
RSS 物理內存
START 什麽時候啟動
TIME 運行多久
COMMAND 命令
STAT :表示進程的狀態,進程狀態分為以下幾種(不要求記住,但要了解)
D 不能中斷的進程(通常為IO)
R 正在運行中的進程
S (大寫的S)已經中斷的進程,通常情況下,系統中大部分進程都是這個狀態
T 已經停止或者暫停的進程,如果我們正在運行一個命令,比如說 vmstat 1 ,如果我們按一下 ctrl + z 讓他暫停,那麽我們用ps查看就會顯示T這個狀態,見下圖,
技術分享圖片
W 這個好像是說,從內核2.6xx 以後,表示為沒有足夠的內存頁分配
X 已經死掉的進程(這個好像從來不會出現)
Z 僵屍進程,殺不掉,打不死的垃圾進程,占系統一小點資源,不過沒有關系。如果太多,就有問題了。一般不會出現。
< 高優先級進程,CPU先給這些進程用
N 低優先級進程
L 在內存中被鎖了內存分頁(還沒見過,了解即可)
s (小寫的s)主進程,一般顯示為 Ss 為主進程,S 為子進程。
l 多線程進程,意思就是這個進程有多個線程。這邊線程和進程,可以查查資料
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片

  • 代表在前臺運行的進程
    這個ps命令是在工作中用的非常多的命令之一。

總結:
iostat -x %util表示在統計時間內所有處理IO時間,除以總共統計時間
iostat 顯示當前磁盤使用情況
iostat 1 每隔1秒顯示一次磁盤使用情況,是動態命令,使用 ctrl + c 結束命令
iotop 磁盤使用情況,按 io 排序
free 可以看到當前系統的總內存大小以及使用內存的情況,-m 單位M,-g單位G,-h智能顯示單位
ps aux 靜態的顯示當前系統的所有進程,經常與 | 一起使用

io、free、ps 命令