详解Linux查看端口占用 - 极悦
首页 课程 师资 教程 报名

详解Linux查看端口占用

  • 2021-01-05 17:58:58
  • 1867次 极悦

在使用计算机的过程中,有时会碰到端口被占用的情况,这时候需要查看端口占用情况进行问题排查。在linux系统中,端口占用的情况也时有发生,一般情况下可以使用lsof和netstat两个命令来查看端口占用情况。
下面我们就分别介绍Linux查看端口占用用到的lsof和netstat命令:

1、lsof命令
lsof(list open files)命令功能:列出当前系统打开文件。在linux系统中,一切皆文件,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。像TCP、UDP 套接字等,系统中都存在对应的文件描述符,该文件描述符为应用程序与操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof命令可以查看这个列表对系统进行监测。
查看某个端口的占用情况使用命令:
lsof -i:port,比如查看9090端口使用情况:lsof -i:9090。
# lsof -i:9090
COMMAND   PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
Thriftc 32551 root    6u  IPv6 23200961      0t0  TCP *:websm (LISTEN)

lsof命令参数:

  • -a:列出打开文件存在的进程;
  • -c<进程名>:列出指定进程所打开的文件;
  • -g:列出GID号进程详情;
  • -d<文件号>:列出占用该文件号的进程;
  • +d<目录>:列出目录下被打开的文件;
  • +D<目录>:递归列出目录下被打开的文件;
  • -n<目录>:列出使用NFS的文件;
  • -i<条件>:列出符合条件的进程。(4、6、协议、:端口、 @ip )
  • -p<进程号>:列出指定进程号所打开的文件;
  • -u:列出UID号进程详情;
  • -h:显示帮助信息;
  • -v:显示版本信息。

2、netstat命令
Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。因此可以使用netstat命令查看系统中端口占用情况。查看指定端口号的进程情况使用命令:netstat -tunlp | grep port,比如查看9090端口的进程:netstat -tunlp | grep 9090。

# netstat -tunlp 
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:34797               0.0.0.0:*                   LISTEN      1554/rpc.statd      
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1497/rpcbind        
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      31165/nginx         
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1988/sshd           
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      2102/master         
tcp        0      0 0.0.0.0:443                 0.0.0.0:*                   LISTEN      31165/nginx         
tcp        0      0 :::9090                     :::*                        LISTEN      32551/./Thriftc     
tcp        0      0 :::53705                    :::*                        LISTEN      1554/rpc.statd      
tcp        0      0 :::111                      :::*                        LISTEN      1497/rpcbind        
tcp        0      0 :::22                       :::*                        LISTEN      1988/sshd           
tcp        0      0 ::1:25                      :::*                        LISTEN      2102/master         
udp        0      0 0.0.0.0:111                 0.0.0.0:*                               1497/rpcbind        
udp        0      0 127.0.0.1:882               0.0.0.0:*                               1554/rpc.statd      
udp        0      0 192.168.0.16:123            0.0.0.0:*                               2013/ntpd           
udp        0      0 127.0.0.1:123               0.0.0.0:*                               2013/ntpd           
udp        0      0 0.0.0.0:123                 0.0.0.0:*                               2013/ntpd           
udp        0      0 0.0.0.0:48037               0.0.0.0:*                               1554/rpc.statd      
udp        0      0 0.0.0.0:824                 0.0.0.0:*                               1497/rpcbind        
udp        0      0 0.0.0.0:68                  0.0.0.0:*                               1585/dhclient       
udp        0      0 :::33758                    :::*                                    1554/rpc.statd      
udp        0      0 :::111                      :::*                                    1497/rpcbind        
udp        0      0 fe80::f816:3eff:fe49:fae:123 :::*                                    2013/ntpd           
udp        0      0 ::1:123                     :::*                                    2013/ntpd           
udp        0      0 :::123                      :::*                                    2013/ntpd           
udp        0      0 :::824                      :::*                                    1497/rpcbind   

# netstat -tunlp | grep 9090
tcp        0      0 :::9090                     :::*                        LISTEN      32551/./Thriftc

netstat命令参数:
  -a (all)  显示所有连线中的Socket
  -t (tcp)  仅显示tcp相关选项
  -u (udp)   仅显示udp相关选项
  -n      拒绝显示别名,能显示数字的全部转化成数字。
  -l      仅列出有在 Listen (监听) 的服務状态
  -p      显示建立相关链接的程序名
  -r      显示路由信息,路由表
  -e      显示扩展信息,例如uid等  
  -s      按各个协议进行统计
  -c      每隔一个固定时间,执行该netstat命令。
  提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到

linux查看端口占用一直是使用操作系统的过程中容易遇见的问题,我们很难避免这样的情况发生,只有采取相应的措施,查看端口占用的情况然后加以解决。在本站的Linux教程中有对端口占用的解决方案,感兴趣的小伙伴可以前去观看学习,通过实践操作检验方案的可行性。

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交