您的位置:

如何在Debian查看端口占用

一、使用netstat命令

netstat命令是一个命令行工具,能够打印出网络连接、路由表、接口状态等网络相关信息。其中,netstat -tunlp可以列出所有占用端口的进程详情。其中:

  • -t表示列出TCP协议的信息
  • -u表示列出UDP协议的信息
  • -n表示不进行DNS解析
  • -l表示只列出监听状态的网络连接
  • -p表示列出占用该端口的进程信息
 $ netstat -tunlp 

执行命令后,会出现类似以下的结果:

 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:80            0.0.0.0:*               LISTEN      443/apache2         
 tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      498/sshd            
 tcp6       0      0 ::1:80                  :::*                    LISTEN      443/apache2         
 udp        0      0 0.0.0.0:68              0.0.0.0:*                           433/dhclient        
 udp6       0      0 :::547                  :::*                                433/dhclient 

从结果中可以看出,PID/Program name一列即为占用该端口的进程信息。其中,tcp、udp分别表示该条连接使用的协议是TCP还是UDP协议。

二、使用ss命令

ss命令是一个基于netlink协议实现的类似于netstat命令的工具,比netstat命令更快速、更节省系统资源。与netstat不同的是,ss命令可以同时显示UDP、TCP和RAW等多种类型连接。

 $ ss -tunlp 

执行完后,会出现类似于netstat命令的结果信息。其中,-t/-u/-n/-l/-p等参数与netstat命令相同,具体含义也相同。

三、使用lsof命令

lsof命令是一种列出系统文件信息的命令,同时也可以列出进程信息,包括占用端口的进程信息。

 $ lsof -i :80 

执行上述命令后,可以列出占用80端口的进程详情,如下所示:

 COMMAND   PID USER          FD   TYPE DEVICE SIZE/OFF NODE NAME
 nginx   10142 root          7u  IPv4 316223      0t0  TCP *:http (LISTEN)
 nginx   10144 www-data      7u  IPv4 316223      0t0  TCP *:http (LISTEN)
 nginx   10145 www-data      7u  IPv4 316223      0t0  TCP *:http (LISTEN) 

四、使用fuser命令

fuser命令是一个查找占用指定端口的进程的命令。与其他命令不同的是,这个命令不需要传递参数,只需要指定占用的端口即可。

 $ fuser 80/tcp 

执行上述命令后,可以显示出占用80端口的进程信息,即:

 10142/tcp:      
 10144/tcp:      
 10145/tcp:      

五、总结

以上就是在Debian中查看端口占用的多种方法。其中,netstat命令是最常用的命令之一,而ss命令则是一个更快、更实用的工具。lsof和fuser命令则可以直接列出占用端口的进程信息,更加直观。