歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

linux命令之lsof使用教程

lsof全名list opened files,也就是列舉系統中已經被打開的文件。我們都知道,linux環境中,任何事物都是文件,設備是文件,目錄是文件,甚至sockets也是文件。所以,用好lsof命令,對日常的linux管理非常有幫助。

lsof語法格式是: lsof [options] filename

常用的參數列表:

lsof filename 顯示打開指定文件的所有進程
lsof -a 表示兩個參數都必須滿足時才顯示結果
lsof -c string 顯示COMMAND列中包含指定字符的進程所有打開的文件
lsof -u username 顯示所屬user進程打開的文件
lsof -g gid 顯示歸屬gid的進程情況
lsof +d /DIR/ 顯示目錄下被進程打開的文件
lsof +D /DIR/ 同上,但是會搜索目錄下的所有目錄,時間相對較長
lsof -d FD 顯示指定文件描述符的進程
lsof -n 不將IP轉換為hostname,缺省是不加上-n參數
lsof -i 用以顯示符合條件的進程情況
lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
46 –> IPv4 or IPv6
protocol –> TCP or UDP
hostname –> Internet host name
hostaddr –> IPv4地址
service –> /etc/service中的 service name (可以不只一個)
port –> 端口號 (可以不只一個)

1) lsof test.txt 顯示開啟文件test.txt的進程

2) lsof -i :80 顯示80端口現在運行什麼程序

3) lsof -c httpd 顯示httpd進程現在打開的文件

4) lsof -g gid 顯示歸屬gid的進程情況

5) lsof +d /usr/local/ 顯示/usr/local目錄下被進程開啟的文件

6) lsof +D /usr/local/ 同上,但是會搜索目錄下的目錄,時間較長

7) lsof -d 4 顯示使用fd為4的進程

lsof -i [i] 用以顯示符合條件的進程情況

語法: lsof -i[46] [protocol][@hostname|hostaddr][:service|port]

46 –> IPv4 or IPv6

protocol –> TCP or UDP

hostname –> Internet host name

hostaddr –> IPv4位置

service –> /etc/service中的 service name (可以不只一個)

port –> 端口號 (可以不只一個)

例子: TCP:25 – TCP and port 25

@1.2.3.4 – Internet IPv4 host address 1.2.3.4

[email protected]:ftp – TCP protocol host:ohaha.ks.edu.tw service name:ftp

9) lsof -n 不將IP轉換為hostname,缺省是不加上-n參數

例子: lsof -i [email protected]:ftp -n

10) lsof -p 12 看進程號為12的進程打開了哪些文件

11) lsof +|-r [t] 控制lsof不斷重復執行,缺省是15s刷新

-r,lsof會永遠不斷的執行,直到收到中斷信號

+r,lsof會一直執行,直到沒有檔案被顯示

例子:不斷查看目前ftp連接的情況:lsof -i [email protected]:ftp -r

12) lsof -s 列出打開文件的大小,如果沒有大小,則留下空白

附對lsof出來的字段說明:

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
httpd 4523 vmail mem REG 8,6 143336 737809 /usr/lib64/libexpat.so.0.5.0
httpd 4523 vmail mem REG 8,6 181832 1092244 /usr/lib64/libapr-0.so.0.9.4
httpd 4523 vmail mem REG 8,6 56885 3457249 /lib64/tls/librt-2.3.4.so

每行顯示一個打開的文件,若不指定條件默認將顯示所有進程打開的所有文件。lsof輸出各列信息的意義如下:

COMMAND:進程的名稱
PID:進程標識符
USER:進程所有者
FD:文件描述符,應用程序通過文件描述符識別該文件。如cwd、txt等
TYPE:文件類型,如DIR、REG等
DEVICE:指定磁盤的名稱
SIZE:文件的大小
NODE:索引節點(文件在磁盤上的標識)
NAME:打開文件的確切名稱

Copyright © Linux教程網 All Rights Reserved