在使用计算机的过程中,有时会碰到端口被占用的情况,这时候需要查看端口占用情况进行问题排查。在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命令参数:
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大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习