Linux 命令 - lsof: 列出打开的文件
lsof 是一个列出当前系统打开文件的工具。
命令格式
lsof [ -?abChlnNOPRstUvVX ] [ -A A ] [ -c c ] [ +c c ] [ +|-d d ] [ +|-D D ] [ +|-f [cfgGn] ] [ -F [f] ] [ -g [s] ] [ -i [i] ] [ -k k ] [ +|-L [l] ] [ +|-m m ] [ +|-M ] [ -o [o] ] [ -p s ] [ +|-r [t] ] [ -S [t] ] [ -T [t] ] [ -u s ] [ +|-w ] [ -x [fl] ] [ -z [z] ] [ -Z [Z] ] [ -- ] [names]
命令参数
-? -h
显示帮助信息
-c s
列出程序 s 所打开的文件
-d s
列出文件描述符为 s 的文件
+d s
列出目录 s 下所有打开的文件
+D D
递归列出目录 D 下所有打开的文件
-g [s]
列出 PGID 为 s 的用户组所打开的文件
-i [46][protocol][@hostname|hostaddr][:service|port]
列出所使用的网络地址符合条件的文件
-p s
列出 PID 为 s 的进程所打开的文件
-u s
列出用户 s 所打开的文件
实例
a) 列出系统当前所有被打开的文件
lsof
b) 列出正在使用 /etc/hosts 的用户
lsof /etc/hosts
c) 列出用户 huey 所打开的文件
lsof -u huey
d) 列出既不是用户 root 也不是用户 huey 打开的文件
lsof -u ^root,^huey
e) 列出程序 mysqld 所打开的文件
lsof -c mysqld
f) 列出 PID 为 2672 的进程所打开的文件
lsof -p 2672
g) 列出所有使用网络连接的进程
lsof -i
h) 列出所有 UDP 网络连接
lsof -i UDP
i) 列出使用 8080 端口的进程
lsof -i:8080
j) 列出被打开的文件描述符为 1 的文件
lsof -d 1