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

语法格式:lsof 参数 文件名

常用参数:

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

参考示例

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

[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认证架构师,教育学(计算机专业硕士)。