歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux top命令解釋

Linux top命令解釋

日期:2017/2/28 14:32:37   编辑:Linux教程

Linux top命令解釋

top - 16:04:56 up 9 min, 3 users, load average: 0.10, 0.08, 0.05
Tasks: 178 total, 2 running, 175 sleeping, 1 stopped, 0 zombie
Cpu(s): 0.7%us, 1.0%sy, 0.0%ni, 98.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1938892k total, 502644k used, 1436248k free, 31324k buffers
Swap: 4161528k total, 0k used, 4161528k free, 260164k cached

1. 第一行任務隊列信息(uptime命令一樣執行結果)
當前時間是16:04:56 , up後面為當前運行9分鐘,當前3個用戶登錄系統,load average(系統負載即任務隊列平均長度) 0.10, 0.0, 0.05 表示1分鐘,5分鐘,15分鐘到現在平均長度.
2.第二,三行為進程和cpu信息,當有多個cpu時會超過二行. 178total(178進程總數) , 2running(2個正在運行),175sleeping(175休眠) ,1stopped(1已經停止),0zombie(0個僵屍進程)
0.7%us(用戶空間占用cpu百分比) %sy(內核空間占用cpu百分比) %ni 用戶進程空間內改變過優先級的進程占用cpu百分比 %id空閒cpu百分比 %wa等待輸入輸出cpu時間百分比
最後二行,
mem : total(物理內存總量) used(使用物理內存總量) free(空閒內存總量) buffers(用作內核緩存的內存量)
swap :total(交換區總量) used(使用交換區總量) free(空閒交換區總量) cached()

PID : 進程ID
USER: real user name
PR:優先級
NI:noce值 負值表示高優先級 ,正值為低優先級
VIRT:進程使用虛內存總量
RES:
SHR:
S:
%CPU:
%MEM :
TIME+: 進程使用cpu時間總計 單位1/100秒
COMMAND:

關於僵屍進程,解釋如下:

一般是fork出子進程的父進程已經結束,子進程無法釋放資源,形成了僵屍進程.

進程已經死亡,但沒有釋放系統資源,包括內存和一些系統表等,如果這樣的進程很多,會引發系統問題。用ps -el看出的進程狀態如果是Z,就是僵屍進程。

S代表休眠狀態;D代表不可中斷的休眠狀態;R代表運行狀態;Z代表僵死狀態;T代表停止或跟蹤狀態。

僵屍進程是指的父進程已經退出,而該進程dead之後沒有進程接受,就成為僵屍進程.(zombie)進程

怎樣產生僵屍進程的:

一個進程在調用exit命令結束自己的生命的時候,其實它並沒有真正的被銷毀,而是留下一個稱為僵屍進程(Zombie)的數據結構(系統調用exit,它的作用是使進程退出,但也僅僅限於將一個正常的進程變成一個僵屍進程,並不能將其完全銷毀)。在Linux進程的狀態中,僵屍進程是非常特殊的一種,它已經放棄了幾乎所有內存空間,沒有任何可執行代碼,也不能被調度,僅僅在進程列表中保留一個位置,記載該進程的退出狀態等信息供其他進 程收集,除此之外,僵屍進程不再占有任何內存空間。它需要它的父進程來為它收屍,如果他的父進程沒安裝SIGCHLD信號處理函數調用wait或 waitpid()等待子進程結束,又沒有顯式忽略該信號,那麼它就一直保持僵屍狀態,如果這時父進程結束了,那麼init進程自動會接手這個子進程,為 它收屍,它還是能被清除的。但是如果父進程是一個循環,不會結束,那麼子進程就會一直保持僵屍狀態,這就是為什麼系統中有時會有很多的僵屍進程。

怎麼查看僵屍進程:

利用命令ps,可以看到有標記為Z的進程就是僵屍進程。

怎樣來清除僵屍進程:

1.改寫父進程,在子進程死後要為它收屍。具體做法是接管SIGCHLD信號。子進程死後,會發送SIGCHLD信號給父進程,父進程收到此信號後,執行 waitpid()函數為子進程收屍。這是基於這樣的原理:就算父進程沒有調用wait,內核也會向它發送SIGCHLD消息,盡管對的默認處理是忽略, 如果想響應這個消息,可以設置一個處理函數。

2.把父進程殺掉。父進程死後,僵屍進程成為"孤兒進程",過繼給1號進程init,init始終會負責清理僵屍進程.它產生的所有僵屍進程也跟著消失。

Copyright © Linux教程網 All Rights Reserved