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

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

常用参数:

-a列出打开文件存在的进程
-c <进程名>列出指定进程所打开的文件
-g列出GID号进程详情
-d <文件号>列出占用该文件号的进程
+d <目录>列出目录下被打开的文件
+D <目录>递归列出目录下被打开的文件
-n <目录>列出使用NFS的文件
-i <条件>列出符合条件的进程
-p <进程号>列出指定进程号所打开的文件
-u列出UID号进程详情
-h 显示帮助信息
-v显示版本信息

参考实例

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

[root@linuxcool ~]# 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@linuxcool ~]# 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@linuxcool ~]# 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
………………省略部分输出信息………………
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。