目录

lsof的用法

概述

当我们需要了解某些文件在被什么进程打开的时候,需要用到 lsof,这在工作中可以帮助解决很多问题,比如一些文件无法删除,一直显示文件在被使用等等,更多的信息可以通过 man lsof 查看,另外 lsoflist open files 的缩写,这样就比较容易记得了。

操作

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 查看某个文件被哪些进程在读写
lsof <file>
# 查看某个进程打开了哪些文件
lsof -c <pid-name>
lsof -p <pid>

# 显示开启文件abc.txt的进程
lsof abc.txt
# 知道22端口现在运行什么程序
lsof -i :22
# 显示nsd进程现在打开的文件
lsof -c nsd
# 显示归属gid的进程情况
lsof -g gid
# 显示目录下被进程开启的文件
lsof +d /usr/local/
# 同上,但是会搜索目录下的目录,时间较长
lsof +D /usr/local/
# 显示使用fd为4的进程
lsof -d 4 
# [i]用以显示符合条件的进程情况
lsof -i

比如下图 6394 是 kubelet 的进程号,可以通过 lsof -p 6379 来查看 kubelet 进程打开了哪些文件。

/lsof%E7%9A%84%E7%94%A8%E6%B3%95/img.png

参考资料

  1. lsof manual
警告
本文最后更新于 2017年2月1日,文中内容可能已过时,请谨慎参考。