Linux下lsof命令使用

目录

lsof 命令使用指南

  • lsof (List Open Files) 是一个用于列出当前系统中打开文件的命令,适用于 Unix 和类 Unix 操作系统。它不仅可以列出常规文件,还可以列出打开的网络文件、设备等。

基本语法

bash 复制代码
lsof [选项] [文件]

常用选项

  • 列出所有打开的文件
bash 复制代码
lsof
  • 列出特定用户打开的文件
bash 复制代码
lsof -u username
  • 列出特定进程打开的文件
bash 复制代码
lsof -p PID
  • 列出特定文件被哪个进程打开
bash 复制代码
lsof /path/to/file
  • 列出特定网络端口上打开的文件
bash 复制代码
lsof -i :port
  • 列出网络文件
bash 复制代码
lsof -i
  • 列出某个目录下打开的文件
bash 复制代码
lsof +D /path/to/dir
  • 列出某个协议的网络文件
bash 复制代码
lsof -i tcp
lsof -i udp
  • 列出所有正在监听的套接字
bash 复制代码
lsof -i -sTCP:LISTEN

使用示例

  1. 查找用户 root 打开的所有文件

    bash 复制代码
    lsof -u root
  2. 查找进程 ID 为 1234 的进程打开的文件

    bash 复制代码
    lsof -p 1234
  3. 查找 TCP 端口 80 上打开的文件

    bash 复制代码
    lsof -i :80
  4. 查找并列出 /var/log/syslog 文件被哪些进程打开

    bash 复制代码
    lsof /var/log/syslog
  5. 查找目录 /home/user 下的所有打开文件

    bash 复制代码
    lsof +D /home/user
  6. 查找所有 TCP 连接

    bash 复制代码
    lsof -i tcp
  7. 查找所有 UDP 连接

    bash 复制代码
    lsof -i udp
  8. 列出所有正在监听的 TCP 套接字

    bash 复制代码
    lsof -iTCP -sTCP:LISTEN

lsof vs netstat

lsof

  • 用途:列出打开的网络文件,包括详细的进程信息。

  • 显示内容 :可以查看哪些进程正在使用网络端口。

    bash 复制代码
    lsof -iTCP -sTCP:LISTEN # 列出所有正在监听的 TCP 端口以及相关的进程。

netstat

  • 用途:显示网络连接、路由表和网络接口信息。

  • 显示内容 :网络连接的状态、端口的监听情况,但不显示具体的进程信息。

    bash 复制代码
    netstat -tuln # 列出所有监听的 TCP 和 UDP 套接字。

区别

  1. 信息范围

    • lsof 可以显示进程与网络连接的对应关系。
    • netstat 主要显示网络连接和端口状态。
  2. 输出内容

    • lsof 提供进程ID、用户、文件描述符等详细信息。
    • netstat 提供协议、端口、连接状态等网络层信息。
  3. 使用场景

    • 使用 lsof 时,可以了解哪个进程在使用特定的网络端口。
    • 使用 netstat 时,可以快速查看网络连接的整体状态。

示例对比

  • 查看所有正在监听的 TCP 端口:

    bash 复制代码
    lsof -iTCP -sTCP:LISTEN  #列出所有正在监听的 TCP 端口以及相关的进程。
    netstat -tuln # 列出所有监听的 TCP 和 UDP 套接字
  • 查看特定端口(如80)被哪个进程使用:

    bash 复制代码
    lsof -i :80
    netstat -anp | grep :80

总结:lsof 提供进程级别的详细信息,而 netstat 更适合查看网络连接和接口的状态,两者可以结合使用以获得更全面的信息。

相关推荐
ShineWinsu2 小时前
对于Linux:基于UDP实现简单聊天室功能
linux·c++·面试·udp·笔试·进程·简单聊天室
Dovis(誓平步青云)2 小时前
《精讲Spring Boot后端跑另一个端口:如何解决暴露服务器问题》
服务器·人工智能·spring boot·后端·生成对抗网络
流量猎手2 小时前
Vscode登陆服务器
服务器·ide·vscode
zoipuus2 小时前
上传repo仓库到自己的gitlab
linux·gitlab·shell·全志·tina
IT大白鼠2 小时前
CVE-2026-7531 Azure Linux MariaDB PQC 内存破坏漏洞详解
linux·mariadb·azure·cve-2026-7531
无忧.芙桃2 小时前
线程同步与线程互斥(上)
linux·运维·操作系统·运维开发
HAPPY酷2 小时前
【ROS2】16G 内存笔记本跑 ROS2 仿真?VMware 虚拟机“保姆级”配置指南 (R9 7940HX + RTX 4060)
java·linux·ide·windows·pycharm
xywww1687 小时前
大模型 API 选型实战:GPT、Gemini、Claude 接入时该看哪些指标?
运维·服务器·人工智能·python·gpt·langchain
梦想的颜色10 小时前
【Docker原理】Docker 容器一文打尽:生命周期、环境管控、迁移备份、日志进程排查、垃圾清理
运维·docker·容器·容器生命周期·容器日志排查·容器迁移备份·容器进程管理
欢呼的太阳11 小时前
数据库设计Step by Step (10)——范式化
服务器·数据库·oracle