• Linux下lsof命令使用


    lsof 命令使用指南

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

    基本语法

    lsof [选项] [文件]
    

    常用选项

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

    使用示例

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

      lsof -u root
      
    2. 查找进程 ID 为 1234 的进程打开的文件

      lsof -p 1234
      
    3. 查找 TCP 端口 80 上打开的文件

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

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

      lsof +D /home/user
      
    6. 查找所有 TCP 连接

      lsof -i tcp
      
    7. 查找所有 UDP 连接

      lsof -i udp
      
    8. 列出所有正在监听的 TCP 套接字

      lsof -iTCP -sTCP:LISTEN
      

    lsof vs netstat

    lsof

    • 用途:列出打开的网络文件,包括详细的进程信息。
    • 显示内容:可以查看哪些进程正在使用网络端口。
      lsof -iTCP -sTCP:LISTEN # 列出所有正在监听的 TCP 端口以及相关的进程。
      

    netstat

    • 用途:显示网络连接、路由表和网络接口信息。
    • 显示内容:网络连接的状态、端口的监听情况,但不显示具体的进程信息。
      netstat -tuln # 列出所有监听的 TCP 和 UDP 套接字。
      

    区别

    1. 信息范围

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

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

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

    示例对比

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

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

  • 相关阅读:
    在Android Studio中,如何通过CMake 配置文件来实现多个动态依赖库的编译?
    vue项目生产环境隐藏暴露的代码_源码
    东哥录了一些课程,你能想到应该都有了
    c#调用CUDA执行YOLOV5对象检测
    任务流程----
    【题解】石子染色 [背包DP]
    Springboot 配置使用 RabbitMQ 并实现延时队列
    Node.js版本管理工具nvm安装
    海思3559万能平台搭建:串口编程
    升级 MacOS 系统后,playCover 内游戏打不开了如何解决
  • 原文地址:https://blog.csdn.net/qq_62311779/article/details/139790130