Linux工具之lsof命令详解

程序员小x大约 2 分钟Linuxtool

Linux工具之lsof命令详解

基本概念

lsof(List Set Open Files)是一个用于查看系统中当前打开文件的命令。在类Unix系统中,几乎所有事物都被视为文件,包括常规文件、目录、设备文件、套接字、管道等。因此,lsof 不仅可以查看正在使用的文件,还可以查看使用网络连接、设备和其他资源的进程。下面我将详细介绍 lsof 的常用选项和用法。

基本语法

lsof [选项] [文件]

常用选项

1.查看所有打开的文件

lsof

这将列出系统中所有打开的文件。输出的每一行代表一个打开的文件,并包含以下列信息:

  • COMMAND:打开文件的进程名。
  • PID:进程ID。
  • USER:进程的属主。
  • FD:文件描述符,表示文件在进程中的引用方式(例如:cwd表示当前工作目录,txt表示程序代码,mem表示内存映射文件,0-9表示文件描述符号)。
  • TYPE:文件类型(例如:DIR目录,REG常规文件,CHR字符设备,FIFO先进先出队列,SOCK套接字)。
  • DEVICE:设备号。
  • SIZE/OFF:文件大小或文件偏移。
  • NODE:文件节点号。
  • NAME:文件名或路径。

2.根据文件名查看使用它的进程

lsof /path/to/file

3.根据PID查看进程打开的文件

lsof -p PID

4.根据用户查看打开的文件

lsof -u 用户名

5.查看网络连接

lsof -i

你可以进一步指定协议和端口:

lsof -i TCP:80  # 查看所有HTTP(TCP端口80)连接
lsof -i UDP:53  # 查看所有DNS(UDP端口53)连接

6.根据命令名称查看文件

lsof -c 命令名

7.查看指定端口的进程

lsof -i :端口号

列出正在使用指定端口的进程。例如:

lsof -i :22  # 查看占用22端口的进程(通常是SSH服务)

8.查看UNIX域套接字

lsof -U

9.组合使用多个选项

你可以组合多个选项以达到更细致的过滤。例如,要查看用户root的进程sshd打开的所有文件:

lsof -u root -c sshd
Loading...