Linux進程管理 - PRI,nice,free,uname,netstat
優先執行序 (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。 |
原本的 bash PRI 為 80 。所以 vi 默認應為 80。只是由於給予 nice 為 -5 , 因此 vi 的 PRI 減少了!
但並不一定都是減少為75 ,由於核心還會動態調整!
renice :已存在程序的 nice 又一次調整
[[email protected] ~]# renice [number] PID 選項與參數: PID :某個程序的 ID 啊。 |
free:觀察內存使用情況
[[email protected] ~]# free [-b|-k|-m|-g] [-t] 選項與參數: -b :直接輸入 free 時,顯示的單位是 Kbytes,我們能夠使用 b(bytes), m(Mbytes) k(Kbytes), 及 g(Gbytes) 來顯示單位喔。 -t :在輸出的終於結果。顯示實體內存與 swap 的總量。 |
uname:查閱系統與核心相關咨詢
[[email protected] ~]# uname [-asrmpi] 選項與參數: -a :全部系統相關的資訊,包含底下的數據都會被列出來; -s :系統核心名稱 -r :核心的版本號 -m :本系統的硬件名稱,比如 i686 或 x86_64 等; -p :CPU 的類型,與 -m 類似,僅僅是顯示的是 CPU 的類型! |
uptime:觀察系統的啟動時間與工作負載
netstat:追蹤網絡或插槽檔
[[email protected] ~]# netstat -[atunlp] 選項與參數: -a :將眼下系統上全部的連線、監聽、Socket 數據都列出來 -t :列出 tcp 網絡封包的數據 -u :列出 udp 網絡封包的數據 -n :不以程序的服務名稱。以埠號 (port number) 來顯示; -l :列出眼下正在網絡監聽 (listen) 的服務。 -p :列出該網絡服務的程序 PID |
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 :後面列出切割槽。可顯示該切割槽的讀寫總量統計表 |
內存欄位 (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