被占用的端口号怎么查看,如何查看某个端口被谁占用

首页 > 经验 > 作者:YD1662024-03-31 00:14:23

在 Linux 系统中列出所有被占用的端口以及对应的程序:

一 列出被使用的端口

1. netstat 是一个非常实用的工具,用于显示网络连接、路由表、接口统计等信息。要查看所有被占用的端口及其对应的程序,可以使用:

netstat -tulnpe

-t 选项表示显示 TCP 连接

-u 选项表示显示 UDP 连接

-l 选项表示仅显示监听中的端口

-n 选项表示以数字形式显示地址和端口号

-p 选项表示显示进程标识符和程序名称,此选项需要 root 权限

-e 选项显示扩展信息,例如 uid 等

注意:在一些最新版本的 Linux 发行版中,netstat 可能不是预装的。可以通过安装 net-tools 包来获取它。

2. ss 可以作为 netstat 的替代品。ss 命令的执行效率比 netstat 更高,特别是在系统打开了大量连接时。要查看所有被占用的端口及其对应的程序,可以使用:

ss -tulnpe

Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process

udp UNCONN 0 0 0.0.0.0:59552 0.0.0.0:* uid:115 ino:55562 sk:1

3. lsof(list open files)是一个列出当前系统打开文件的工具。由于在 UNIX 和 Linux 中一切皆文件,网络连接也被视为文件,所以可以使用 lsof 来查看被占用的端口。要查看所有被占用的端口及其对应的程序,可以使用:

lsof -i -P -n

-i 选项表示显示网络连接

-P 选项表示不解析端口名称(显示端口号)

-n 选项表示以 IP 地址显示,不解析主机名

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

java 1861 ze 136u IPv6 44351 0t0 TCP *:8080 (LISTEN)

二 如何进一步查看详细的进程信息

1.如何根据pid查看详细的程序信息

ps -f -p PID

ls /proc/PID

ps -f -p PID

2.如何根据 inode(ino)编号查看详细的程序信息

sudo find /proc/ -type l -lname 'socket:[1013887]' 2>/dev/null

执行该命令后,如果找到了匹配的符号链接,输出将类似于:

/proc/12345/fd/3

这意味着进程 12345 拥有一个文件描述符,指向 inode 为 1013887 的套接字。可以通过查看 /proc/12345 目录下的信息(如 cmdline、status 文件)来获取有关该进程的更多详细信息:

cat /proc/12345/cmdlinecat /proc/12345/status

cmdline 文件包含了启动进程时使用的命令行参数,而 status 文件提供了进程的状态信息,包括它的 PID、PPID(父进程ID)、运行状态等。

3.如何根据 socket 编号通常在 ss 命令的输出中看到,格式如 sk:8编号查看详细的程序信息

sudo ss -tulnpe | grep 'sk:您的socket编号'

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.