Linux中如何查找进程占用的端口?netstat与ss命令使用技巧

在Linux系统上,netstat和ss是检查进程占用端口的常用工具。
两者都可以显示网络连接、监听端口以及相关进程信息,但ss性能更好。
下面是具体的使用方法和技巧: 1 、使用netstat查看端口和进程。
Netstat(NetworkStatistics)通过分析内核网络信息来显示TCP/UDP连接、路由表等数据。
常用命令:sudonetstat-tulnp 参数说明: -t:仅显示TCP连接。
-u:仅显示UDP连接。
-l:仅列出处于监听状态的端口。
-n:以数字形式显示地址和端口(不解析服务名称,例如显示8 0而不是http)。
-p:显示进程ID(PID)和名称(需要root权限)。
输出示例:ProtoRecv-QSend-QLocalAddressForeignAddressStatePID/Programnametcp6 00:::8 0:::*LISTEN1 2 3 4 /nginx 解释:IPv6 端口 8 0 由 PID 1 2 3 4 的 nginx 进程控制。
注意:如果不使用 sudo,您将无法查看完整的进程信息。
默认情况下,同时显示IPv4 和IPv6 ,协议版本可限制为-4 或-6 2 .使用ss代替netstat(推荐)。
ss (SocketStatistics) 是 netstat 的现代替代品。
它直接读取内核空间,速度更快,语法简洁。
基本命令:sudoss-tulnp 参数说明:与netstat相同,但输出格式更紧凑。
示例输出: NetidStateRecv-QSend-QLocalAddress:PortPeerAddress:PorttcpLISTEN01 2 8 *:8 0*:*users:(("nginx",pid=1 2 3 4 ,fd=6 )) 解释:TCP 端口 8 0 由 nginx(PID1 2 3 4 )控制,文件描述符为 6 优点:更高 性能:适合快速排查大量连接。
清晰的输出:过程信息显示在嵌套括号中,以便于阅读。
3 .通过端口号找到对应的进程。
如果端口号已知,则可以使用管道 |结合grep来过滤结果。
查找8 0端口进程: sudoss-tulnp|grep':8 0'# 或 sudonetstat-tulnp|grep':8 0' 输出:仅显示包含:8 0的行,直接查找进程的PID和名称。
进一步查看详情进程: ps -p1 2 3 4 # 替换为实际输出的PID:显示进程的完整路径、执行时间等。
4 、常见问题及注意事项。
权限问题:您必须使用 sudo 或以 root 身份运行它,否则您将无法查看 PID/Programname 字段。
协议差异: TCP:面向连接,用于 Web 服务(HTTP/HTTPS)、邮件(SMTP)等。
UDP:无连接,用于 DNS 查询、视频流(RTSP)、在线游戏等。
IPv4 和 IPv6 :netstat 默认显示两种协议,可以使用 -4 或 -6 进行限制。
ss 默认显示所有协议,但可以通过-4 或-6 进行过滤。
性能对比:当连接数较多(如上千个)时,ss的响应速度明显快于netstat,建议优先使用。
5 .总结 基本命令:sudonetstat-tulnp:列出所有监听端口和进程(兼容旧系统)。
sudoss-tulnp:推荐用于新项目的有效替代方案。
过滤技巧:使用grep命令快速查找特定端口(如grep':8 0')。
权限管理:始终使用sudo以确保信息完整。
一旦掌握了这两个工具,您就可以轻松识别端口冲突、进程劫持等网络问题的根本原因。

如何查看linux端口被哪个进程占用

要查看 Linux 上哪个进程占用了特定端口,可以按照以下步骤操作: 查询占用端口:使用命令 netstattunpl|grep port number,将端口号替换为要查询的端口号。
该命令将显示有关使用该端口的所有进程的信息。
查询进程ID:从上一步的输出结果中查找对应的进程ID。
进程 ID 通常出现在 PID/程序名称列中。
根据进程ID查询进程详细信息:使用psef|grep命令进程ID,其中进程ID替换为上一步中找到的进程ID。
该命令会显示进程的详细信息,包括启动进程的用户、命令行参数等。
显示进程所在目录:如果需要显示进程所在目录,可以使用命令ll /proc/process ID/cwd,其中进程ID替换为指定的进程ID。
该命令将显示进程当前工作目录的符号链接。
运行进程:指定端口占用进程后,可以根据需要触发该进程,如重新启动、停止、删除等。
但请注意,直接终止进程可能会导致数据丢失或服务中断,因此在执行这些操作之前请确保您了解潜在的后果。
通过以上步骤,您可以轻松查看Linux上某个端口被哪个进程占用,并获取该进程的详细信息。