如何检查Linux上是否正在使用端口?

时间:2020-01-09 14:16:38  来源:igfitidea点击:

我需要找出使用命令行在Linux上的端口上侦听哪个进程。
如何确定Linux操作系统上的端口正在侦听哪个进程?

Linux中的网络端口仅是一个数字,用于标识两个系统之间连接的一侧。
所有联网设备都使用端口号来确定将消息传递到哪个进程。
域名和IP地址就像街道地址,而端口号就像房间号。

Linux中的常用端口号

  • HTTP TCP 80
  • HTTPS TCP 443
  • POP3 TCP 110
  • SMTP TCP 25
  • SSH TCP 22
  • DNS /域TCP/UDP 53

使用cat命令或grep命令/egrep命令来查询端口号,如下所示:

cat /etc/services
grep -w 80 /etc/services
egrep -w '53/(tcp|udp)' /etc/services

如何检查Linux是否正在使用端口

步骤如下:

  • 打开终端应用程序
  • 输入以下命令中的任何一个,以检查Linuxsudo lsof -i -P -n |是否正在使用端口。 grep LISTENsudo netstat -tulpn | grep LISTENsudo netstat -tulpn | grep:443``sudo ss -tulpn | grep LISTEN``sudo ss -tulpn | grep':22'

让我们详细查看一些示例和示例命令。

您如何找出哪个进程正在Linux的端口上侦听

输入ss命令或netstat命令以查看Linux上是否正在使用TCP端口443?

sudo netstat -tulpn | grep :443
sudo ss -tulpn | grep :443

如果端口是开放的,您应该看到如下输出:

tcp    0  0 0.0.0.0:443    0.0.0.0:*      LISTEN      438/nginx -g daemo

nginx服务正在使用并打开端口443。
其中:

  • -t:显示TCP套接字/端口
  • -u:显示UDP套接字/端口
  • -l:仅查看监听套接字,即打开端口
  • -p:还显示打开端口/套接字的进程名称
  • -n:以数字格式查看地址和端口号。不要使用DNS来解析名称。

获取生产中所有开放端口的列表

只需运行:

sudo lsof -i -P -n | grep LISTEN
sudo ss -tulpn
sudo netstat -tulpn

输出示例:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      500/redis-server 12
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      438/nginx -g daemon
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      407/lighttpd    
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      438/nginx -g daemon
tcp6       0      0 :::80                   :::*                    LISTEN      438/nginx -g daemon
udp        0      0 0.0.0.0:68              0.0.0.0:*                           277/dhclient

lsof命令的另一个输出:从上面的输出中,很明显,Lighttpd打开了端口TCP端口8080,而Nginx服务器打开了TCP 80端口和443端口。
所有这些服务器都在名为www-data的用户下运行。