Linux如何查看端口占用

在Linux系统中,端口是计算机网络中用来区分不同应用程序或服务的数字标签。因此,了解哪些应用程序在使用哪个端口是非常重要的。本篇文章将介绍如何在Linux系统中查看端口占用。

使用netstat命令

netstat是Linux系统中一个非常强大的命令行工具,用于查看网络连接、网络接口和端口占用等信息。要查看系统中所有的端口占用情况,可以使用以下命令:

netstat -tunlp

该命令会显示系统中所有的TCP、UDP和Unix域协议的网络连接、监听状态、本地IP地址、远程IP地址以及对应的端口号。其中,-t选项表示只显示TCP连接,-u选项表示只显示UDP连接,-n选项表示以数字格式显示IP地址和端口,-l选项表示只显示处于监听状态的连接,-p选项表示显示进程ID和应用程序名称。

例如,以下是返回的一个示例结果:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1147/sshd

tcp6 0 0 :::22 :::* LISTEN 1147/sshd

udp 0 0 0.0.0.0:5353 0.0.0.0:* 1003/avahi-daemon:

udp6 0 0 :::5353 :::* 1003/avahi-daemon:

使用该命令可以很容易地找到正在使用某个端口的应用程序和进程ID。

使用lsof命令

lsof是另一个查看端口占用情况的命令行工具。与netstat类似,lsof可以查看系统中所有打开的文件和文件描述符,包括网络连接和端口占用情况。

要查看系统中所有的端口占用情况,可以使用以下命令:

sudo lsof -i -P -n

该命令会显示系统中所有打开的网络连接和监听状态,以及对应的应用程序名称、进程ID和协议等信息。其中,-i选项表示仅显示网络连接,-P选项表示不解析端口号,-n选项表示仅显示IP地址和端口号,而不显示域名。

例如,以下是返回的一个示例结果:

COMMAND     PID       USER   FD  TYPE DEVICE SIZE/OFF NODE NAME

sshd 1147 root 3u IPv4 11124 0t0 TCP *:22 (LISTEN)

sshd 1147 root 4u IPv6 11126 0t0 TCP *:22 (LISTEN)

avahi-dae 1003 avahi-daemon:776 9u IPv4 10584 0t0 UDP *:5353

avahi-dae 1003 avahi-daemon:776 11u IPv6 10586 0t0 UDP *:5353

使用该命令可以获取与netstat类似的信息,同时还可以查看所有打开的文件和文件描述符的情况。

使用ss命令

ss是一个更加高级、更加快速的命令行工具,用于查看网络连接和端口占用情况。与netstat和lsof不同,ss是一个基于内核API的工具,因此它可以更加准确和高效地查看网络连接和端口占用情况。

要查看系统中所有的端口占用情况,可以使用以下命令:

sudo ss -tunlp

该命令可以快速并准确地显示系统中的TCP、UDP和Unix域协议连接、网络接口和监听状态,以及对应的应用程序名称、进程ID和协议等信息。

例如,以下是返回的一个示例结果:

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

tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1147,fd=3))

tcp LISTEN 0 128 :::22 :::* users:(("sshd",pid=1147,fd=4))

udp UNCONN 0 0 0.0.0.0:5353 0.0.0.0:* users:(("avahi-daemon",pid=1003,fd=9))

udp UNCONN 0 0 :::5353 :::* users:(("avahi-daemon",pid=1003,fd=11))

使用该命令可以快速定位正在使用某个端口的应用程序和进程ID,同时还可以查看更多的网络连接和监听状态等信息。

总结

本篇文章介绍了Linux系统中三种查看端口占用情况的常用命令:netstat、lsof和ss。这些工具可以帮助我们快速地定位正在使用某个端口的应用程序和进程ID,以及查看更多的网络连接和监听状态等信息。根据实际需要选择使用不同的命令可以让我们更加高效地管理系统和维护网络安全。