怎么查看Linux端口占用情况 - 技术文档

  1. 门户首页
  2. 技术文档

怎么查看Linux端口占用情况

一、前言

在 Linux 系统的使用中,经常会有端口占用的情况发生,导致程序无法安装,正常运行,稍微懂一点计算机网络的大家都知道,当一个程序占用了某个端口之后,这个端口就不能再被其他程序使用了。经常有朋友问普创网络 CentOS,Ubuntu,Debian 系统这出了问题那出了问题,前几步检查必查的就是端口占用。那么怎么去检测查看,Linux系统的端口占用情况呢?普创网络这里介绍几种常见和通用的办法。

[root@localhost ~]# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 *:ssh                       *:*                         LISTEN      
tcp        0      0 112.187.25.63:ssh          1.82.42.240:24652           ESTABLISHED 
tcp        0     48 112.187.25.63:ssh          1.82.42.240:21566           ESTABLISHED 
tcp        0      0 *:mysql                     *:*                         LISTEN      
tcp        0      0 *:http                      *:*                         LISTEN      
tcp        0      0 *:ssh                       *:*                         LISTEN      
tcp        0      0 *:https                     *:*                         LISTEN      
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ACC ]     STREAM     LISTENING     175386141 /tmp/mysql.sock
unix  4      [ ]         DGRAM                    162171201 /dev/log
unix  2      [ ACC ]     STREAM     LISTENING     10113  @/com/ubuntu/upstart
unix  2      [ ]         DGRAM                    11512  @/org/kernel/udev/udevd
unix  2      [ ]         DGRAM                    172411497 
unix  2      [ ]         DGRAM                    162372037 
unix  3      [ ]         STREAM     CONNECTED     13919  
unix  3      [ ]         STREAM     CONNECTED     13918  
unix  3      [ ]         DGRAM                    11531  
unix  3      [ ]         DGRAM                    11530  
[root@localhost ~]# 

 

二、查看方法

首先,当你无法运行以下命令时候,请检查是否已经安装相应软件,您可以用以下命令安装:

# 安装 netstat 需要的组件
$ yum install net-tools # CentOS 系列系统
$ apt-get install net-tools # Ubuntu 和 Debian 系列系统

# 安装 lsof
$ yum install lsof # CentOS 系列系统
$ apt-get install lsof # Ubuntu 和 Debian

netstat 的用法参数如下:

  1. -a 显示所有连接
  2. -t 显示TCP端口
  3. -u 显示UDP端口
  4. -l 仅显示套接字监听的端口
  5. -n 用数字显示ip和端口
  6. -p 显示端口对应的进程PID和名字

所以我们就可以这么查看

$ netstat -atunp # 查看已经建立连接的端口情况命令
$ netstat -tunlp #显示所有服务器端口监听使用情况

当80端口被占用的时候可以这么用

$ netstat -tunlp | grep 80 # 查看80端口情况

 

lsof 的功能也比较强大,这里我们用到的是 -i 参数,用法如下

lsof -i # 列出所有端口情况
lsof -i:[端口] # [端口] 换成在要查询的占用端口
# 如查询 80 端口
lsof -i:80

 

三、后记

查询到端口占用后,不一定非要杀死这个进程。也可以换一个没被占用的端口用,如果无法更改端口,又决心如果决心想用相应端口,可以用 kill 命令杀死对应占用程序。

kill -9 [pid] # [pid] 换成在上面命令获得的进程PID