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
………………省略部分输出信息………………