Linux 之 netstat 使用(查询端口号占用)

有的时候我们想找到某个端口被那个进程占用,然后 kill 掉他

Linux 下可以执行如下的命令

1、netstat

1.1 介绍

netstat用来查看系统当前系统网络状态信息,包括端口,连接情况等,常用方式如下:
-t : 指明显示TCP端口
-u : 指明显示UDP端口
-l : 仅显示监听套接字(LISTEN状态的套接字)
-p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序
-n : 不进行DNS解析
-a 显示所有的活跃连接的端口(tcp和udp)
-a (all)显示所有选项,默认不显示 LISTEN 相关
-n 不显示别名,能显示数字的全部转化成数字
-p 显示建立相关链接(sockets)的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。

1.2 示例

netstat -tunlp|grep   # grep 后可以跟端口、或者跟关键字,比如 redis 应用

[root@VM-4-8-centos ~]# netstat -tunlp|grep 6379
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      1074/redis-server 1
tcp6       0      0 ::1:6379                :::*                    LISTEN      1074/redis-server 1

[root@VM-4-8-centos ~]# netstat -tunlp|grep redis
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      1074/redis-server 1
tcp6       0      0 ::1:6379                :::*    

2、lsof

2.1 介绍

lsof(list open files)是一个列出当前系统打开文件的工具。
lsof 查看端口占用语法格式:
lsof -i:端口号

2.2 示例


[root@VM-4-8-centos ~]# lsof -i:6379
COMMAND    PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
redis-ser 1074 root    6u  IPv4 8234699      0t0  TCP VM-4-8-centos:6379 (LISTEN)
redis-ser 1074 root    7u  IPv6 8234700      0t0  TCP VM-4-8-centos:6379 (LISTEN)

lsof输出各列信息的意义如下:
COMLAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
TYPE:文件类型,如DIR、REG等
DEYICE :
指定磁盘的名称
SIIE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称


版权声明:本文为yeyinzhu3211原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。