lsof命令来自于英文词组“list opened files”的缩写,其功能是用于查看文件的进程信息。既然Linux系统中的一切都是文件,那么使用lsof命令查看进程打开的文件,又或是查看文件的进程信息,都能够很好的帮助用户了解相关服务的运行状态,是一个不错的系统监视工具。

语法格式:lsof [参数] [文件名]

常用参数:

-a显示打开文件存在的进程
-c显示指定进程所打开的文件
-d显示占用该文件的进程
-g显示GID号进程详细信息
-h显示帮助信息
-i显示符合条件的进程
-n显示使用NFS的文件
-N显示NFS文件列表
-o显示文件偏移量
-p显示指定进程号所打开的文件
-R显示父进程ID标识号
-u显示UID号进程详细信息
-v显示版本信息
+d显示目录下被打开的文件
+D递归处理所有子文件

参考示例

查看当前系统中全部文件与进程对应信息:

[root@linux-arae-cc ~]# lsof 
COMMAND    PID  TID TASKCMD   USER   FD      TYPE   DEVICE SIZE/OFF       NODE NAME
systemd      1    root  cwd       DIR              253,0      224        128 /
systemd      1    root  rtd       DIR              253,0      224        128 /
………………省略部分输出信息………………

显示指定目录中被调用的文件信息:

[root@linux-arae-cc ~]# lsof +d /root
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
dbus-daem 2158 root  cwd    DIR  253,0     4096 33575041 /root
gdm-wayla 2161 root  cwd    DIR  253,0     4096 33575041 /root
gnome-ses 2164 root  cwd    DIR  253,0     4096 33575041 /root
gnome-she 2223 root  cwd    DIR  253,0     4096 33575041 /root
gvfsd     2240 root  cwd    DIR  253,0     4096 33575041 /root
………………省略部分输出信息………………

递归显示指定目录中全部被调用的文件信息:

[root@linux-arae-cc ~]# lsof +D /root
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
pulseaudi 2147 root  mem    REG  253,0      696   781661 /root/.config/pulse/d035ea0c9f884c418d9855119085f3f0-card-database.tdb
pulseaudi 2147 root  mem    REG  253,0    12288   781660 /root/.config/pulse/d035ea0c9f884c418d9855119085f3f0-stream-volumes.tdb
pulseaudi 2147 root  mem    REG  253,0     8192   781659 /root/.config/pulse/d035ea0c9f884c418d9855119085f3f0-device-volumes.tdb
………………省略部分输出信息………………