lsof -i:3306
查看3306端口被誰占用
lsof簡介
lsof(list open files)是一個列出當前系統打開文件的工具。在linux環境下,任何事物都以文件的形式存在,通過文件不僅僅可以訪問常規數據,還可以訪問網絡連接 和硬件。所以如傳輸控制協議 (tcp) 和用戶數據報協議 (udp) 套接字等,系統在后臺都為該應用程序分配了一個文件描述符,無論這個文件的本質如何,該文件描述符為應用程序與基礎操作系統之間的交互提供了通用接口。因 為應用程序打開文件的描述符列表提供了大量關于這個應用程序本身的信息,因此通過lsof工具能夠查看這個列表對系統監測以及排錯將是很有幫助的。
lsof使用
lsof輸出信息含義
在終端下輸入lsof即可顯示系統打開的文件,因為 lsof 需要訪問核心內存和各種文件,所以必須以 root 用戶的身份運行它才能夠充分地發揮其功能。
command pid user fd type device size node name
init 1 root cwd dir 3,3 1024 2 /
init 1 root rtd dir 3,3 1024 2 /
init 1 root txt reg 3,3 38432 1763452 /sbin/init
init 1 root mem reg 3,3 106114 1091620 /lib/libdl-2.6.so
init 1 root mem reg 3,3 7560696 1091614 /lib/libc-2.6.so
init 1 root mem reg 3,3 79460 1091669 /lib/libselinux.so.1
init 1 root mem reg 3,3 223280 1091668 /lib/libsepol.so.1
init 1 root mem reg 3,3 564136 1091607 /lib/ld-2.6.so
init 1 root 10u fifo 0,15 1309 /dev/initctl
每行顯示一個打開的文件,若不指定條件默認將顯示所有進程打開的所有文件。lsof輸出各列信息的意義如下:
command:進程的名稱
pid:進程標識符
user:進程所有者
fd:文件描述符,應用程序通過文件描述符識別該文件。如cwd、txt等
type:文件類型,如dir、reg等
device:指定磁盤的名稱
size:文件的大小
node:索引節點(文件在磁盤上的標識)
name:打開文件的確切名稱
其中fd 列中的文件描述符cwd 值表示應用程序的當前工作目錄,這是該應用程序啟動的目錄,除非它本身對這個目錄進行更改。
txt 類型的文件是程序代碼,如應用程序二進制文件本身或共享庫,如上列表中顯示的 /sbin/init 程序。其次數值表示應用
程序的文件描述符,這是打開該文件時返回的一個整數。如上的最后一行文件/dev/initctl,其文件描述符為 10。u 表示該
文件被打開并處于讀取/寫入模式,而不是只讀 ? 或只寫 (w) 模式。同時還有大寫 的w 表示該應用程序具有對整個文件的寫
鎖。該文件描述符用于確保每次只能打開一個應用程序實例。初始打開每個應用程序時,都具有三個文件描述符,從 0 到 2,
分別表示標準輸入、輸出和錯誤流。所以大多數應用程序所打開的文件的 fd 都是從 3 開始。
與 fd 列相比,type 列則比較直觀。文件和目錄分別稱為 reg 和 dir。而chr 和 blk,分別表示字符和塊設備;
或者 unix、fifo 和 ipv4,分別表示 unix 域套接字、先進先出 (fifo) 隊列和網際協議 (ip) 套接字。
posted on 2011-06-02 11:12
David1228 閱讀(321)
評論(0) 編輯 收藏 所屬分類:
Linux