lsof:文件被进程占用/进程占用的文件

lsof:list open files,列举打开的文件。

在 linux 系统中,一切皆文件。通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以 lsof 命令不仅可以查看进程打开的文件、目录,还可以查看进程监听的端口等 socket 相关信息。

查看文件被哪些进程读写:

lsof 文件名

查看进程打开了哪些文件(注意,在Unix中一切(包括网络套接口)都是文件!):

lsof –c 进程名
lsof –p 进程号pid

 命令结果

COMMAND PID USER  FD   TYPE DEVICE  SIZE/OFF NODE NAME
java    377 root mem    REG 0,2057 647385905  255 ip.txt

COMMAND:程序的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件
TYPE:文件类型,如 DIR、REG 等
DEVICE:以逗号分隔设备编号
SIZE:文件的大小(bytes)
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的具体名称

常用选项

-a 指示其它选项之间为与的关系
-c <进程名> 输出指定进程所打开的文件
-d <文件描述符> 列出占用该文件号的进程
+d <目录>  输出目录及目录下被打开的文件和目录(不递归)
+D <目录>  递归输出及目录下被打开的文件和目录
-i <条件>  输出符合条件与网络相关的文件
-n 不解析主机名
-p <进程号> 输出指定 PID 的进程所打开的文件
-P 不解析端口号
-t 只输出 PID
-u 输出指定用户打开的文件
-U 输出打开的 UNIX domain socket 文件
-h 显示帮助信息
-v 显示版本信息

常用举例:
lsof abc.txt 显示开启文件abc.txt的进程
lsof -i :22 知道22端口现在运行什么程序
lsof -c nsd 显示nsd开头的进程打开的文件
lsof +d /usr/local/ 显示目录下被进程开启的文件
lsof -i [i] 用以显示符合条件的进程情况
lsof -p 377 列举pid=377进程打开的文件

你可能感兴趣的:(linux,lsof)