centos7.x 查看端口占用情况方法

centos7.x 查看端口占用情况可以使用 lsof 和 netstat 命令

1.lsof

lsof(list open files)是一个列出当前系统打开文件的工具。

lsof 查看端口占用语法格式:

[root@localhost ~]# lsof -i:80        
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
httpd   15508   root    4u  IPv6 729602      0t0  TCP *:http (LISTEN)
httpd   15509 apache    4u  IPv6 729602      0t0  TCP *:http (LISTEN)
httpd   15510 apache    4u  IPv6 729602      0t0  TCP *:http (LISTEN)
httpd   15511 apache    4u  IPv6 729602      0t0  TCP *:http (LISTEN)
httpd   15512 apache    4u  IPv6 729602      0t0  TCP *:http (LISTEN)
httpd   15513 apache    4u  IPv6 729602      0t0  TCP *:http (LISTEN)
httpd   15523 apache    4u  IPv6 729602      0t0  TCP *:http (LISTEN)
httpd   20528 apache    4u  IPv6 729602      0t0  TCP *:http (LISTEN)

 查看了80端口的占用情况,均在监听中

[root@localhost ~]# lsof -i:22

[root@localhost ~]# lsof -i:11022
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    16105 root    3u  IPv6 734716      0t0  TCP *:11022 (LISTEN)
sshd    16105 root    4u  IPv4 734718      0t0  TCP *:11022 (LISTEN)
sshd    19620 root    3u  IPv4 961213      0t0  TCP localhost.localdomain:11022->192.168.8.88:65053 (ESTABLISHED)
sshd    19624 root    3u  IPv4 963414      0t0  TCP localhost.localdomain:11022->192.168.8.88:65066 (ESTABLISHED)

这里先是查看了22端口,发现无输出,其实是改了sshd的默认端口号了。

再查看11022端口,有sshd的监听信息了,其中第三四条是我当前正在连接的

ps:lsof -i 需要 root 用户的权限来执行

centos7.x 查看端口占用情况方法_第1张图片

 更多 lsof 的命令如下:

lsof a.txt:显示开启文件a.txt的进程
lsof -c a:显示a进程现在打开的文件
lsof -c -p 123:列出进程号为123的进程所打开的文件
lsof -g gid:显示归属gid的进程
lsof +d /usr/local/:显示目录下被进程开启的文件
lsof +D /usr/local/:同上,但是会搜索目录下的目录,时间较长
lsof -d 4:显示使用fd为4的进程
lsof -i -U:显示所有打开的端口和UNIX domain文件

2.netstat

netstat -ntlp 

用于显示  tcp 的端口和进程等相关情况

[root@localhost ~]# netstat -ntlp
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:11022           0.0.0.0:*               LISTEN      16105/sshd
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      5694/master
tcp6       0      0 :::11022                :::*                    LISTEN      16105/sshd
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd
tcp6       0      0 :::80                   :::*                    LISTEN      15508/httpd
tcp6       0      0 ::1:25                  :::*                    LISTEN      5694/master

netstat -nulp 

用于显示 udp 的端口和进程等相关情况

[root@localhost ~]# netstat -nulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
udp        0      0 0.0.0.0:111             0.0.0.0:*                           1/systemd
udp        0      0 127.0.0.1:323           0.0.0.0:*                           4813/chronyd
udp        0      0 0.0.0.0:721             0.0.0.0:*                           4814/rpcbind
udp6       0      0 :::111                  :::*                                1/systemd
udp6       0      0 ::1:323                 :::*                                4813/chronyd
udp6       0      0 :::721                  :::*                                4814/rpcbind

可以看到  仅更改t为u,即可显示不同协议的连接情况,那么各个字母代表哪些意义呢?

-r:--route,显示路由表信息
-g:--groups,显示多重广播功能群组组员名单
-s:--statistics,按照每个协议来分类进行统计。默认的显示IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP和UDPv6 的统计信息。
-M:--masquerade,显示网络内存的集群池统计信息
-v:--verbose,命令显示每个运行中的基于公共数据链路接口的设备驱动程序的统计信息
-W:--wide,不截断IP地址
-n:进制使用域名解析功能。链接以数字形式展示(IP地址),而不是通过主机名或域名形式展示
-N:--symbolic,解析硬件名称
-e:--extend,显示额外信息
-p:--programs,与链接相关程序名和进程的PID
-t:所有的 tcp 协议的端口
-x:所有的 unix 协议的端口
-u:所有的 udp 协议的端口
-o:--timers,显示计时器
-c:--continuous,每隔一个固定时间,执行netstat命令
-l:--listening,显示所有监听的端口
-a:--all,显示所有链接和监听端口
-F:--fib,显示转发信息库(默认)
-C:--cache,显示路由缓存而不是FIB
-Z:--context,显示套接字的SELinux安全上下文

组合使用示例:

netstat -anp:显示系统端口使用情况
netstat -nupl:UDP类型的端口
netstat -ntpl:TCP类型的端口
netstat -na|grep ESTABLISHED|wc -l:统计已连接上的,状态为"established"
netstat -l:只显示所有监听端口
netstat -lt:只显示所有监听tcp端口

netstat -ntlp | grep 80

grep起到筛选作用,会匹配后面的字符 端口号 服务名 端口状态均可

[root@localhost ~]# netstat -ntlp |grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      15508/httpd


[root@localhost ~]# netstat -ntlp |grep sshd
tcp        0      0 0.0.0.0:11022           0.0.0.0:*               LISTEN      16105/sshd
tcp6       0      0 :::11022                :::*                    LISTEN      16105/sshd


[root@localhost ~]# netstat -alp |grep ESTA
tcp        0     48 localhost.localdo:11022 192.168.8.88:65053      ESTABLISHED 19620/sshd: root@pt
tcp        0      0 localhost.localdo:11022 192.168.8.88:65066      ESTABLISHED 19624/sshd: root@no

有异常端口占用就必须杀死进程

kill

例如我们要杀死 15508 进程      15508是PID

kill -9 15508

你可能感兴趣的:(Linux使用技巧,linux,运维,网络)