1. 程式人生 > >Linux進程管理 - PRI,nice,free,uname,netstat

Linux進程管理 - PRI,nice,free,uname,netstat

table 內存不足 不一定 影響 表示 order net 喚醒 總計

優先執行序 (priority, PRI)

這個 PRI 值越低代表越優先的意思。只是這個 PRI 值是由核心動態調整的, 使用者無法直接調整 PRI 值的。

技術分享

由於 PRI 是核心動態調整的,我們使用者也無權去幹涉 PRI !那假設你想要調整進程的優先執行序時,就得要透過 Nice 值了!

Nice 值就是上表的 NI 啦!一般來說。 PRI 與 NI 的相關性例如以下:

PRI(new) = PRI(old) + nice

只是你要特別留意到。假設原本的 PRI 是 50 。並非我們給予一個 nice = 5 ,就會讓 PRI 變成 55 喔!

由於 PRI 是系統『動態』決定的。所以。盡管 nice 值是能夠影響 PRI ,只是, 終於的 PRI 仍是要經過系統分析後才會決定的。

另外, nice 值是有正負的喔,而既然 PRI 越小越早被執行。 所以。當 nice 值為負值時,那麽該進程就會減少 PRI 值。亦即會變的較優先被處理。此外,你必需要留意到:

nice 值可調整的範圍為 -20 ~ 19 。
root 可任意調整自己或他人程序的 Nice 值,且範圍為 -20 ~ 19 ;
一般使用者僅可調整自己進程的 Nice 值,且範圍僅為 0 ~ 19 (避免一般用戶搶占系統資源)。
一般使用者僅可將 nice 值越調越高,比如本來 nice 為 5 ,則未來僅能調整到大於 5;

nice :新執行的命令即給予新的 nice 值

[[email protected] ~]# nice [-n 數字] command
選項與參數:
-n  :後面接一個數值,數值的範圍 -20 ~ 19。


eg:用root給一個nice值為-5, 用於執行vi,並觀察該進程。

技術分享

原本的 bash PRI 為 80 。所以 vi 默認應為 80。只是由於給予 nice 為 -5 , 因此 vi 的 PRI 減少了!

但並不一定都是減少為75 ,由於核心還會動態調整!


renice :已存在程序的 nice 又一次調整

[[email protected] ~]# renice [number] PID
選項與參數:
PID :某個程序的 ID 啊。

eg:找出自己的bash PID,並將該PID的nice調整到10

技術分享


free:觀察內存使用情況

[[email protected] ~]# free [-b|-k|-m|-g] [-t]
選項與參數:
-b  :直接輸入 free 時,顯示的單位是 Kbytes,我們能夠使用 b(bytes), m(Mbytes)
      k(Kbytes), 及 g(Gbytes) 來顯示單位喔。
-t  :在輸出的終於結果。顯示實體內存與 swap 的總量。

eg:顯示眼下系統的內存容量

技術分享


uname:查閱系統與核心相關咨詢

[[email protected] ~]# uname [-asrmpi]
選項與參數:
-a  :全部系統相關的資訊,包含底下的數據都會被列出來;
-s  :系統核心名稱
-r  :核心的版本號
-m  :本系統的硬件名稱,比如 i686 或 x86_64 等;
-p  :CPU 的類型,與 -m 類似,僅僅是顯示的是 CPU 的類型!

-i :硬件的平臺 (ix86)


eg:輸出系統的基本咨詢

技術分享


uptime:觀察系統的啟動時間與工作負載

技術分享


netstat:追蹤網絡或插槽檔

[[email protected] ~]# netstat -[atunlp]
選項與參數:
-a  :將眼下系統上全部的連線、監聽、Socket 數據都列出來
-t  :列出 tcp 網絡封包的數據
-u  :列出 udp 網絡封包的數據
-n  :不以程序的服務名稱。以埠號 (port number) 來顯示;
-l  :列出眼下正在網絡監聽 (listen) 的服務。
-p  :列出該網絡服務的程序 PID 

eg:列出眼下系統已經創建的網絡連線與unix socket狀態

技術分享


dmesg:分析核心產生的信息

技術分享

dmesg顯示的信息實在太多了。執行時一般增加管線命令來擷取須要的信息。


vmstat:偵測系統資源變化

[[email protected] ~]# vmstat [-a] [延遲 [總計偵測次數]] <==CPU/內存等資訊
[[email protected] ~]# vmstat [-fs]                      <==內存相關
[[email protected] ~]# vmstat [-S 單位]                  <==配置顯示數據的單位
[[email protected] ~]# vmstat [-d]                       <==與磁碟有關
[[email protected] ~]# vmstat [-p 切割槽]                <==與磁碟有關
選項與參數:
-a  :使用 inactive/active(活躍與否) 代替 buffer/cache 的內存輸出資訊;
-f  :啟動到眼下為止,系統復制 (fork) 的程序數;
-s  :將一些事件 (啟動至眼下為止) 導致的內存變化情況列表說明。
-S  :後面能夠接單位,讓顯示的數據有單位。比如 K/M 代替 bytes 的容量;
-d  :列出磁碟的讀寫總量統計表
-p  :後面列出切割槽。可顯示該切割槽的讀寫總量統計表

eg:統計眼下主機CPU狀態,每秒1次,共計3次

技術分享

內存欄位 (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:被虛擬機器 (virtual machine) 所盜用的 CPU 使用狀態。


eg:系統上面全部的磁盤讀寫狀態

技術分享

Linux進程管理 - PRI,nice,free,uname,netstat