当前位置: 首页 > article >正文

linux 查看端口占用 netstat, lsof, ss, fuser 笔记241123

linux 查看端口占用 netstat, lsof, ss, fuser

在 Linux 系统中,你可以使用多种命令来查看哪个进程占用了特定的端口。以下是一些常用的方法:

在 Linux 系统中,查看端口占用情况可以使用多种工具和命令。以下是几种常用的方法:

使用 netstat

netstat 是一个强大的网络统计工具,可以显示网络连接、路由表、接口统计、伪装连接和多播成员等信息。要查看端口占用情况,可以使用以下命令:

sudo netstat -tuln

解释:

  • -t:显示 TCP 端口
  • -u:显示 UDP 端口
  • -l:显示监听状态的端口
  • -n:以数字形式显示地址和端口号

使用 ss

ssnetstat 的替代品,用于显示套接字统计信息。它通常比 netstat 更快、更高效。要查看端口占用情况,可以使用以下命令:

sudo ss -tuln

参数含义与 netstat 类似:

  • -t:显示 TCP 端口
  • -u:显示 UDP 端口
  • -l:显示监听状态的端口
  • -n:以数字形式显示地址和端口号

使用 lsof

lsof(List Open Files)是一个列出当前系统打开文件的工具。由于在 Linux 中,几乎所有东西都被当作文件处理,包括网络连接,因此 lsof 也可以用来查看端口占用情况:

sudo lsof -i -P -n

解释:

  • -i:显示网络相关的信息
  • -P:显示端口号而不是服务名
  • -n:不解析主机名

使用 fuser

fuser 可以显示哪些进程正在使用某个文件、套接字或文件系统。要查看某个特定端口的占用情况,可以使用以下命令:

sudo fuser -n tcp 22

这个命令会显示正在使用 TCP 端口 22(通常是 SSH 服务)的进程 ID。

示例:查找特定端口的占用情况

假设你想查找端口 8080 是否被占用,可以使用以下任一命令:

  • 使用 netstat

    sudo netstat -tuln | grep 8080
    
  • 使用 ss

    sudo ss -tuln | grep 8080
    
  • 使用 lsof

    sudo lsof -iTCP -sTCP:LISTEN -P | grep 8080
    
  • 使用 fuser

    sudo fuser 8080/tcp
    

这些命令会帮助你找到正在使用指定端口的进程,从而进行相应的处理,比如杀掉进程或更改端口配置。







使用 netstat

netstat 是一个网络相关的命令行工具,可以显示网络连接、路由表、接口统计信息等。

sudo netstat -tuln | grep :<端口号>

例如,要查看端口 8080 是否被占用,可以运行:

sudo netstat -tuln | grep :8080

然而,netstat 不会显示占用端口的进程 ID(PID)。为了显示 PID,可以结合 lsofss 命令使用。

使用 lsof

lsof 是一个列出当前系统打开文件的工具,因为网络连接在 Linux 中也是文件的一种,所以 lsof 可以用来查看端口占用情况。

sudo lsof -i :<端口号>

例如,要查看端口 8080 的占用情况,可以运行:

sudo lsof -i :8080

这将显示使用该端口的进程及其详细信息,包括 PID。

使用 ss

ss 是一个新的工具,用于显示套接字统计信息,可以替代 netstat

sudo ss -tuln | grep :<端口号>

要查看占用端口的进程信息,可以使用 -p 选项:

sudo ss -tulnp | grep :<端口号>

例如,要查看端口 8080 的占用情况及其进程信息,可以运行:

sudo ss -tulnp | grep :8080

使用 fuser

fuser 命令可以显示哪个进程正在使用某个文件、套接字或文件系统。

sudo fuser <端口号>/tcp

例如,要查看端口 8080 的占用情况,可以运行:

sudo fuser 8080/tcp

你还可以使用 -v 选项获取更多信息:

sudo fuser -v 8080/tcp

示例

假设你想查看端口 8080 是否被占用,并且想知道是哪个进程占用了它,可以使用以下命令之一:

sudo lsof -i :8080
# 或者
sudo ss -tulnp | grep :8080
# 或者
sudo fuser -v 8080/tcp

这些命令将帮助你找到占用端口的进程及其详细信息。




netstatlsofssfuser 是 Linux 系统中用于查看网络状态和文件(包括套接字)使用情况的强大工具。下面是对这四个工具的简要介绍和比较:

netstat

netstat 是一个历史悠久的网络统计工具,它能够显示网络连接、路由表、接口统计、伪装连接、多播成员等信息。尽管功能强大,但 netstat 在某些系统上可能不是最快的选项,因为它可能需要从多个源收集信息并进行汇总。

常用命令示例:

  • 查看所有监听端口:netstat -tuln
  • 查看所有网络连接:netstat -an
  • 显示路由表:netstat -r
  • 显示网络接口统计:netstat -i

lsof

lsof(List Open Files)用于列出当前系统打开的文件。在 Linux 中,网络连接也被视为文件,因此 lsof 可以用来查看哪些进程打开了哪些网络连接。lsof 的输出可能非常详细,有时需要一些过滤来找到感兴趣的信息。

常用命令示例:

  • 查看所有网络连接:lsof -i
  • 查看特定端口的连接:lsof -i :8080(注意这里的端口号前有一个冒号)
  • 查看某个进程打开的文件:lsof -p PID(其中 PID 是进程 ID)

ss

ssnetstat 的一个更现代、更高效的替代品。它能够更快地显示网络连接的统计信息,因为它直接从内核中获取信息,而不需要像 netstat 那样进行汇总。ss 的输出格式也更加灵活和易于理解。

常用命令示例:

  • 查看所有监听端口:ss -tuln
  • 查看所有网络连接:ss -an
  • 查看特定进程的连接:ss -p PID

fuser

fuser 用于显示哪些进程正在使用某个文件、套接字或文件系统。它可以用来查找哪个进程正在监听某个端口,或者哪个进程正在访问某个特定的文件。fuser 的输出通常是一个进程 ID 列表。

常用命令示例:

  • 查看正在使用某个端口的进程:fuser -n tcp PORT(其中 PORT 是端口号)
  • 查看正在访问某个文件的进程:fuser FILENAME
  • 杀掉正在使用某个端口的所有进程:fuser -k -n tcp PORT(注意:使用 -k 选项时要非常小心)

比较

  • 性能ss 通常比 netstat 更快,因为它直接从内核获取信息。
  • 功能netstatss 提供了类似的功能集,但 ss 的输出格式更灵活。lsoffuser 则提供了不同的视角,分别关注打开的文件和正在使用文件的进程。
  • 易用性ss 的输出通常更容易理解,而 lsof 的输出可能需要一些额外的过滤来找到有用的信息。fuser 则非常直接,用于查找特定文件或套接字的进程。
  • 兼容性netstat 在许多系统上都是可用的,但一些较新的系统可能更倾向于使用 sslsoffuser 也通常可在大多数 Linux 发行版上找到。

在选择使用哪个工具时,通常取决于具体的需求和偏好。例如,如果你需要快速查看网络连接状态,ss 可能是一个好选择。如果你需要查找哪个进程正在使用某个特定的文件或端口,fuser 可能会更方便。而 lsof 则提供了更广泛的视角,可以查看所有打开的文件,包括网络连接和常规文件。







netstat 命令

netstat 是一个网络统计工具,它能够显示网络连接、路由表、接口统计、伪装连接以及多播成员等多种网络信息。尽管在某些系统上,netstat 可能已经被 ss 等更现代的工具所取代,但它仍然是一个非常有用的命令行工具,特别是在需要快速查看网络状态时。

以下是 netstat 命令的一些常见用法和选项:

基本用法

  • netstat:显示所有活动的网络连接,包括 TCP 和 UDP 连接,以及监听状态的端口。

常用选项

  • -a:显示所有连接和监听端口,包括 TCP 和 UDP。
  • -t:仅显示 TCP 连接。
  • -u:仅显示 UDP 连接。
  • -l:显示监听状态的端口。
  • -n:以数字形式显示地址和端口号,而不是尝试解析主机名和服务名。
  • -p:显示与每个连接相关的进程 ID 和进程名称(需要 root 权限)。
  • -r:显示路由表。
  • -i:显示网络接口统计信息。
  • -c:每隔一段时间(默认是 1 秒)重新显示一次信息,直到用户中断。

组合使用

  • netstat -tuln:显示所有监听状态的 TCP 和 UDP 端口,并以数字形式显示地址和端口号。
  • netstat -anp:显示所有活动的网络连接,包括进程 ID 和进程名称(需要 root 权限)。
  • netstat -r:查看系统的路由表。
  • netstat -i:查看网络接口的统计信息,如数据包收发情况等。

示例

  1. 查看所有活动的 TCP 连接:

    netstat -at
    
  2. 查看所有监听状态的端口,并以数字形式显示:

    netstat -tuln
    
  3. 显示网络接口统计信息:

    netstat -i
    
  4. 每隔 2 秒重新显示一次所有活动的网络连接:

    netstat -c 2
    
  5. 显示与每个连接相关的进程信息(需要 root 权限):

    sudo netstat -anp
    

请注意,netstat 命令的输出可能会因系统配置和版本的不同而略有差异。此外,随着 Linux 系统的更新,一些较新的发行版可能默认不包含 netstat,而是推荐使用 ss 等替代工具。如果你发现你的系统上没有 netstat,你可以尝试安装 net-tools 包,它通常包含了 netstat







ss 命令

ss 命令是 Linux 系统中的一个网络工具命令,用于查看系统的套接字(Socket)情况。它提供了丰富的功能和选项,可以显示当前系统的所有套接字信息,包括 TCP 和 UDP 连接,以及相关的统计数据。以下是关于 ss 命令的详细解释和常见用法:

基本语法

ss [选项] [过滤器]

常用选项

  • -t:仅显示 TCP 连接。
  • -u:仅显示 UDP 连接。
  • -l:仅显示监听状态的套接字。
  • -a:显示所有套接字,包括监听和非监听状态的。
  • -n:以数字形式显示 IP 地址和端口号,不进行主机名和服务名解析。
  • -p:显示与套接字关联的进程信息。
  • -e:显示详细的套接字信息,包括获取用户信息。
  • -s:显示网络连接相关的统计数据。
  • -o:显示套接字的计时器信息。
  • -i:显示内部 TCP 信息。
  • -H:以人类可读的格式显示时间戳。
  • -Z:显示 SELinux 安全上下文信息(需要 root 权限)。

过滤器

ss 命令还支持使用过滤器来精确控制输出内容。常用的过滤器包括:

  • state [状态]:根据连接的状态进行过滤,如 ESTABLISHEDTIME_WAIT 等。
  • sport = :端口号:根据源端口进行过滤。
  • dport = :端口号:根据目标端口进行过滤。
  • src [地址]:根据源 IP 地址进行过滤。
  • dst [地址]:根据目标 IP 地址进行过滤。

常见用法示例

  1. 显示所有 TCP 连接:

    ss -t
    
  2. 显示所有 UDP 连接:

    ss -u
    
  3. 显示所有监听状态的套接字:

    ss -l
    
  4. 显示所有套接字,包括监听和非监听状态的:

    ss -a
    
  5. 显示所有 TCP 连接,并以数字形式显示 IP 地址和端口号:

    ss -tn
    
  6. 显示与套接字关联的进程信息:

    ss -p
    
  7. 显示特定状态的 TCP 连接,如所有已建立的连接:

    ss -t state established
    
  8. 显示所有监听 80 端口的连接:

    ss -t state listening dport = :80
    
  9. 显示所有本地端口为 22 的连接:

    ss sport = :22
    
  10. 显示所有目标地址为 192.168.0.1 的连接:

    ss dst 192.168.0.1
    

与其他命令结合使用

ss 命令的输出可以与 grepawksort 等命令结合使用,进行更复杂的数据处理和过滤。例如,可以使用以下命令来显示所有 TCP 连接,并过滤出与指定 IP 地址相关的连接:

ss -t | grep '192.168.0.1'

注意事项

  • 使用某些选项(如 -p 显示进程信息)可能需要 root 权限。
  • ss 命令的输出可能因系统配置和版本的不同而略有差异。
  • 在处理大量网络连接时,ss 命令通常比 netstat 更高效,因为它直接从内核获取信息。

ss 命令是 Linux 系统管理员进行网络故障排除和性能优化时的一个有力工具。通过灵活使用不同的选项和过滤器,可以方便地查看和分析系统上的网络套接字信息。







lsof 命令

lsof(list open files)是一个用于列出当前系统打开文件的工具。在 Linux 环境下,任何事物都以文件的形式存在,包括常规文件、目录、网络连接(如 TCP 和 UDP 套接字)、字符和块设备文件等。lsof 可以帮助用户和系统管理员查看哪些进程打开了哪些文件,以及哪些网络连接正在被使用。

以下是关于 lsof 命令的详细解释和常见用法:

基本语法

lsof [选项] [文件]

常见选项

  • -a:逻辑与(AND),表示所有选项都必须满足。
  • -c <进程名>:列出指定进程名所打开的文件。
  • -g:列出指定 GID(组 ID)的进程所打开的文件。
  • -d <文件号>:列出占用该文件号的进程。
  • +d <目录>:列出指定目录下被打开的文件。
  • +D <目录>:递归列出指定目录下被打开的文件。
  • -i:列出打开的网络连接(TCP、UDP)。
  • -i[46] [protocol][@hostname|hostaddr][:service|port]:更细粒度地列出网络连接,其中 46 表示 IPv4 或 IPv6,protocol 表示 TCP 或 UDP,hostname 表示主机名,hostaddr 表示 IP 地址,service 表示服务名,port 表示端口号。
  • -n:不将 IP 地址转换为主机名。
  • -p <进程号>:列出指定进程号所打开的文件。
  • -u <用户名>:列出指定用户打开的文件。
  • -v:显示版本信息。

输出信息解释

lsof 命令的输出通常包含以下列:

  • COMMAND:进程名称。
  • PID:进程标识符。
  • USER:进程所有者。
  • FD:文件描述符,应用程序通过文件描述符识别该文件。例如,cwd 表示当前工作目录,txt 表示程序代码文件。
  • TYPE:文件类型,如 REG(常规文件)、DIR(目录)、CHR(字符设备)、FIFO(命名管道)、SOCK(套接字)等。
  • DEVICE:设备标识符。
  • SIZE/OFF:文件大小或偏移量。
  • NODE:索引节点号。
  • NAME:打开文件的路径和文件名。

常见用法示例

  1. 列出当前系统打开的所有文件

    lsof
    
  2. 列出指定进程打开的文件

    lsof -c mysql
    
  3. 列出指定用户打开的文件

    lsof -u username
    
  4. 列出指定目录下被打开的文件

    lsof +d /path/to/directory
    
  5. 列出所有网络连接

    lsof -i
    
  6. 列出特定端口的网络连接

    lsof -i :80
    
  7. 列出特定用户打开的特定端口的网络连接

    lsof -a -u username -i tcp:80
    
  8. 列出所有 TCP 网络连接

    lsof -i tcp
    
  9. 列出所有 UDP 网络连接

    lsof -i udp
    
  10. 列出所有打开的文件,并过滤出包含某个关键字的文件名

    lsof | grep keyword
    

注意事项

  • lsof 命令需要访问核心内存和各种文件,因此通常需要 root 用户权限来执行。
  • lsof 的输出可能非常详细,有时需要结合 grep 等工具进行过滤,以找到感兴趣的信息。
  • 在处理大量输出时,可以使用 lessmore 命令进行分页查看。

lsof 命令是 Linux 系统管理和故障排除中的一个强大工具,通过它可以深入了解系统当前的文件和网络连接状态。







fuser 命令

fuser 命令是 Linux 操作系统中一个常用的命令,用于查找和显示正在使用文件或文件系统的进程。它可以帮助用户找出哪些进程正在访问某个文件或目录,进而进行相关的操作。以下是关于 fuser 命令的详细解释和常见用法:

基本语法

fuser [选项] 文件/目录路径

常用选项

  • -a:显示所有文件被访问的信息。
  • -c:显示所有与指定文件在同一文件系统的被访问文件的信息。
  • -d:显示所有与指定文件在同一文件系统的被访问文件的信息,但忽略没有链接的文件。
  • -f:将文件视为普通文件,而不是套接字或命名管道。
  • -i:交互式模式,在杀死进程前进行询问。
  • -k:发送 SIGKILL 信号给使用该文件的进程,强制关闭它们。
  • -l:列出所有已知的信号名称。
  • -m:查找与指定挂载点相关联的进程。
  • -n:指定网络协议(如 TCP、UDP)和端口号,用于查找使用特定网络端口的进程。
  • -s:静默模式,不显示警告信息。
  • -u:显示使用文件的进程的用户 ID。
  • -v:显示详细的进程信息。
  • -V:显示版本信息。
  • -w:仅显示有写访问的进程。
  • -x:显示没有链接的文件。

常见用法示例

  1. 查找使用某个文件的进程

    fuser /path/to/file
    

    这将显示正在使用该文件的进程的进程号(PID)。

  2. 显示详细的进程信息

    fuser -v /path/to/file
    

    这将显示使用该文件的进程的详细信息,包括进程 ID、用户、命令行等。

  3. 强制关闭使用某个文件的进程

    fuser -k /path/to/file
    

    这将发送 SIGKILL 信号给使用该文件的进程,强制关闭它们。请注意,此操作可能会造成数据丢失,应谨慎使用。

  4. 查找使用某个目录的进程

    fuser -m /path/to/directory
    

    这将显示正在使用该目录的进程的进程号。

  5. 查找使用特定网络端口的进程

    fuser -n tcp 80
    

    这将显示使用 TCP 端口 80 的进程的进程号。

  6. 查找使用某个文件的进程并显示用户信息

    fuser -u /path/to/file
    

    这将显示使用该文件的进程的用户 ID。

注意事项

  • 使用 fuser 命令的 -k 选项强制关闭进程时,可能会导致数据丢失或系统不稳定,因此应谨慎使用。
  • 在某些情况下,可能需要 root 权限才能执行 fuser 命令或查看某些进程的信息。
  • fuser 命令的输出可能因系统配置和版本的不同而略有差异。

fuser 命令是 Linux 系统中用于查看和控制文件进程的实用工具,通过它可以方便地找出哪些进程正在使用某个文件或目录,并根据需要进行管理。














http://www.kler.cn/a/408824.html

相关文章:

  • MATLAB的addpath和rmpath函数增加或删除路径
  • 【时时三省】NIT计算机考试基础知识
  • 【力扣算法题】双指针-战场上的矛与盾的组合(移动零)(快乐数)
  • 创建可重用React组件的实用指南
  • 【虚拟机】VMWare的CentOS虚拟机断电或强制关机出现问题
  • 利用 Python 和 Selenium 高效启动和管理 Chrome 浏览器
  • 【Pytest+Yaml+Allure】实现接口自动化测试框架
  • 【深度学习】Pytorch 1.x 安装命令
  • openssl创建自签名证书
  • 从一个“支付状态不一致“的bug,看大型分布式系统的“隐藏杀机“
  • 数据集-目标检测系列- 牵牛花 检测数据集 morning_glory >> DataBall
  • HTTP 消息结构
  • 2024年亚太地区数学建模大赛D题-探索量子加速人工智能的前沿领域
  • 香港服务器安装Debian12操作系统有python环境嘛
  • go 结构体指针
  • tcpdump抓包 wireShark
  • Android Studio更改项目使用的JDK
  • vscode可以编译通过c++项目,但头文件有红色波浪线的问题
  • 基于YOLOv8深度学习的智慧考场考试防作弊行为检测系统设计与实现(PyQt5界面+数据集+训练代码)
  • VsCode使用git提交很慢(一直显示在提交)_vscode commit很慢解决方法
  • 深入解析PyTorch中的卷积操作:原理、应用与示例
  • URL在线编码解码- 加菲工具
  • Flink——source数据来源分类
  • 线性代数公式速记手册
  • 【超详细】卷积神经网络CNN基本架构以及工作原理详解
  • YB2503HV:高效率降压IC,助力电动车、太阳能设备等领域的能源转换