2009年11月3日

程序(process)管理與檔案(lsof)

最常用來觀察系統process的指令就是ps跟top
ps aux
A表示所有process皆列出,a表示不與terminal有關的
u表示有效user

列表的caption大多可以望文生義,其中比較特別的有
VSZ :該 process 使用掉的虛擬記憶體量 (Kbytes)
RSS :該 process 佔用的固定的記憶體量 (Kbytes)
STAT:表示狀態,process狀態有底下列出的幾種
  • R (Running):該程式正在運作中;
  • S (Sleep):開程式目前正在睡眠狀態(idle),但可以被喚醒(signal)。
  • D :不可被喚醒的睡眠狀態,通常這支程式可能在等待 I/O 的情況(ex>列印)
  • T :停止狀態(stop),可能是在工作控制(背景暫停)或除錯 (traced) 狀態;
  • Z (Zombie):殭屍狀態,程序已經終止但卻無法被移除至記憶體外。
pstree可以使用樹狀列表的方式顯示process,可以看到由哪些process生出了哪些process
top則列出目前系統執行的時候,各個process佔用的資源比例

在unix/linux底下幾乎可以把所有東西看成FILE/檔案,包含socket、device...等等,所以有個可以觀察開啟檔案的指令叫做lsof (list open file),其實資訊是由/proc來的,可以觀察非常多東西,不過也非常難整理(如果不加參數),使用lsof時建議使用root權限,不然可能因為權限問題看不到資料

lsof -u user_id
觀察使用者開啟的檔案
lsof +p procces#
觀察process#所開啟的檔案
lsof -i:#
-i跟:間沒有空白,觀察某個port number所開啟的檔案
lsof `which apache2`
觀察哪個process在使用apache2程式
lsof /dev/hda6
觀察哪個process佔用這個device

沒有留言: