這個快速參考備(bei)忘單提(ti)供了使用 lsof 命令的各種方法。
lsof 表示 L
is
t O
pen F
iles 用于(yu)查找哪(na)個進程打(da)開了哪(na)些文件(jian)
$ lsof
$ sudo lsof -u root
$ lsof -i :8080
$ lsof -i :80 -i :22
$ lsof -i TCP:22
$ lsof -i TCP:1-1024
$ lsof -i UDP
$ lsof -i @192.168.1.5
$ lsof -c mysql
$ lsof -c java
$ lsof -c ssh
$ lsof -c nginx
$ lsof -c ssh -c httpd
$ lsof -u www-data
$ lsof -u www-data -u ubuntu
$ lsof -i -u ^root # 特定用(yong)戶(hu)除外
$ lsof -i 4 # 僅 IPv4
$ lsof -i 6 # 僅 IPv6
$ lsof -p 1753
$ lsof -p ^3 # 除了某(mou)些(xie)pid
$ lsof /var/log/messages
$ lsof /etc/passwd
$ lsof +D /var/log # 在目錄(lu)內
$ kill -9 `lsof -t -u apache`
$ kill -9 $(lsof -t -i :8080)
-a # 列出打開文件存在的進程;
-c<進程名> # 列出指(zhi)定(ding)進程所打開的文件;
-g # 列出GID號(hao)進程詳情(qing);
-d<文件號> # 列出(chu)占(zhan)用該(gai)文件號的進(jin)程;
+d<目錄> # 列出目(mu)錄下(xia)被打(da)開的文(wen)件;
+D<目錄> # 遞歸列(lie)出目(mu)錄下被(bei)打開(kai)的文件;
-n<目錄> # 列出使用(yong)NFS的(de)文件(jian);
-i<條件> # 列出符(fu)合條件的(de)進程(協議,:端口(kou),@ip)
-p<進程號> # 列(lie)出(chu)指定進程號(hao)所打開(kai)的文件;
-u # 列出UID號進(jin)程詳情;
-h # 顯示(shi)幫助(zhu)信(xin)息;
-v # 顯(xian)示(shi)版本信息(xi)
lsof -p $pid
lsof -i:9981 -P -t -sTCP:LISTEN
lsof $filename
$ lsof
command PID USER FD type DEVICE SIZE NODE NAME
init 1 root cwd DIR 8,2 4096 2 /
init 1 root rtd DIR 8,2 4096 2 /
init 1 root txt REG 8,2 43496 6121706 /sbin/init
init 1 root mem REG 8,2 143600 7823908 /lib64/ld-2.5.so
init 1 root mem REG 8,2 1722304 7823915 /lib64/libc-2.5.so
init 1 root mem REG 8,2 23360 7823919 /lib64/libdl-2.5.so
init 1 root mem REG 8,2 95464 7824116 /lib64/libselinux.so.1
init 1 root mem REG 8,2 247496 7823947 /lib64/libsepol.so.1
init 1 root 10u FIFO 0,17 1233 /dev/initctl
migration 2 root cwd DIR 8,2 4096 2 /
migration 2 root rtd DIR 8,2 4096 2 /
migration 2 root txt unknown /proc/2/exe
:- | :- |
---|---|
cwd | 表示當前工作目錄,即:應用程序的當前工作目錄,這是該應用程序啟動的目錄,除非它本身對這個目錄進行更改 |
txt | 該類型的文件是程序代碼,如應用程序二進制文件本身或共享庫,如上列表中顯示的 /sbin/init 程序 |
lnn | 庫引用 (AIX); |
er | FD 信息錯誤(參見名稱欄) |
jld | jail 目錄 (FreeBSD); |
ltx | 共享庫文本(代碼和數據) |
mxx | 十六進制內存映射類型編號xx |
m86 | DOS合并映射文件 |
mem | 內存映射文件 |
mmap | 內存映射設備 |
pd | 父目錄 |
rtd | 根目錄 |
tr | 內核跟蹤文件 (OpenBSD) |
v86 | VP/ix 映射文件 |
0 | 表示標準輸出 |
1 | 表示標準輸入 |
2 | 表示標準錯誤 |
:- | :- |
---|---|
COMMAND | 進程的名稱 |
PID | 進程標識符 |
PPID | 父進程標識符(需要指定-R參數) |
USER | 進程所有者 |
PGID | 進程所屬組 |
FD | 文件描述符,應用程序通過它識別該文件 |
:- | :- |
---|---|
u | 表示該文件被打開并處于讀取/寫入模式 |
r | 表示該文件被打開并處于只讀模式 |
w | 表示該文件被打開并處于寫入模式 |
空格 | 表示該文件的狀態模式為 unknow,且沒有鎖定 |
- | 表示該文件的狀態模式為 unknow,且被鎖定 |
一般在標準輸出/輸入/錯誤后還跟著文件狀態模式(shi)
:- | :- |
---|---|
N | 對于未知類型的Solaris NFS鎖 |
r | 用于部分文件的讀取鎖定 |
R | 對整個文件進行讀取鎖定 |
w | 對文件的一部分進行寫鎖定(文件的部分寫鎖) |
W | 對整個文件進行寫鎖定(整個文件的寫鎖) |
u | 用于任何長度的讀寫鎖 |
U | 對于未知類型的鎖 |
x | 對于文件部分的SCO OpenServer Xenix鎖 |
X | 對于整個文件的SCO OpenServer Xenix鎖 |
space | 如果沒有鎖 |
在文件狀態模式后面,還跟著相關的鎖
標識 | 說明 |
---|---|
DIR | 表示目錄 |
CHR | 表示字符類型 |
BLK | 塊設備類型 |
UNIX | UNIX 域套接字 |
FIFO | 先進先出 (FIFO) 隊列 |
IPv4 | 網際協議 (IP) 套接字 |
DEVICE | 指定磁盤的名稱 |
SIZE | 文件的大小 |
NODE | 索引節點(文件在磁盤上的標識) |
NAME | 打開文件的確切名稱 |
REG | 常規文件 |