linux怎么查看端口被谁使用(lsof-i与netstat指令)版权声明

原创
小哥 2年前 (2022-12-30) 阅读数 61 #大杂烩

1、lsof -i

lsof(list open files)是一个列出当前系统打开文件的工具。在里面linux在环境中,一切都以文件的形式存在,通过文件不仅可以访问常规数据,还可以访问网络连接和硬件。就像传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台为应用程序分配文件描述符,而不考虑文件的性质,这为应用程序和底层操作系统之间的交互提供了一个公共接口。因为应用程序打开的文件的描述符列表提供了许多关于应用程序本身的信息,所以它被传递。lsof该工具查看此列表的功能将有助于系统监控和故障排除。

详细了解lsof,您可以参考:https://www.cnblogs.com/sparkbj/p/7161669.html

2、netstat命令是监视器TCP/IP一个非常有用的网络工具,显示每个网络接口设备的路由表、实际网络连接和状态信息

netstat -tunlp 显示tcp,udp港口和流程

netstat -anp 还可以显示系统端口使用情况

netstat [选项]

-a或--all:显示中的所有连接Socket;
-A<网络类型>或--<网络类型>:列出此网络类型连接中的相关地址;
-c或--continuous:连续列出网络状态;
-C或--cache显示路由器配置的缓存信息;
-e或--extend:显示网络的其他相关信息;
-F或--fib:显示FIB;
-g或--groups:显示多广播功能组的成员列表;
-h或--help在线帮助;
-i或--interfaces:显示网络接口信息表;
-l或--listening显示器Socket;
-M或--masquerade:显示伪装的网络连接;
-n或--numeric:直接使用ip不通过域名服务器的地址;
-N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称;
-o或--timers:显示计时器;
-p或--programs:正在使用的节目Socket程序识别码和程序名称;
-r或--route:显示Routing Table;
-s或--statistice:显示网络工作信息统计;
-t或--tcp:显示TCP传输协议的连接状态;
-u或--udp:显示UDP传输协议的连接状态;
-v或--verbose:显示指令执行过程;
-V或--version显示版本信息;
-w或--raw:显示RAW传输协议的连接状态;
-x或--unix此参数的影响和指定"-A unix"参数相同;
--ip或--inet此参数的影响和指定"-A inet"参数相同。
方法1: lsof -i 用于显示合格流程,lsof(list open files)是一个列出当前系统打开文件的工具。

以root要执行的用户lsof -i命令,如下所示:

[root@hadoop01 yum.repos.d]# lsof -i
COMMAND     PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rpcbind    1873     rpc    6u  IPv4  15228      0t0  UDP :sunrpc
rpcbind    1873     rpc    7u  IPv4  15230      0t0  UDP
:wpages
rpcbind    1873     rpc    8u  IPv4  15231      0t0  TCP :sunrpc (LISTEN)
rpcbind    1873     rpc    9u  IPv6  15233      0t0  UDP
:sunrpc
rpcbind    1873     rpc   10u  IPv6  15235      0t0  UDP :wpages
rpcbind    1873     rpc   11u  IPv6  15236      0t0  TCP
:sunrpc (LISTEN)
rpc.statd  2017 rpcuser    5r  IPv4  15556      0t0  UDP :921
rpc.statd  2017 rpcuser    8u  IPv4  15563      0t0  UDP
:32846
rpc.statd  2017 rpcuser    9u  IPv4  15567      0t0  TCP :42335 (LISTEN)
rpc.statd  2017 rpcuser   10u  IPv6  15571      0t0  UDP
:41231
rpc.statd  2017 rpcuser   11u  IPv6  15575      0t0  TCP :56522 (LISTEN)
cupsd      2072    root    6u  IPv6  15795      0t0  TCP localhost:ipp (LISTEN)
cupsd      2072    root    7u  IPv4  15796      0t0  TCP localhost:ipp (LISTEN)
cupsd      2072    root    9u  IPv4  15811      0t0  UDP
:ipp
sshd       2191    root    3u  IPv4  16362      0t0  TCP :ssh (LISTEN)
sshd       2191    root    4u  IPv6  16366      0t0  TCP
:ssh (LISTEN)
mysqld     2379   mysql   10u  IPv4  17615      0t0  TCP :mysql (LISTEN)
nginx      3953    root   11u  IPv4  35803      0t0  TCP
:distinct (LISTEN)
sshd      11504    root    3r  IPv4 125196      0t0  TCP www.brz.com:ssh->bogon:55057 (ESTABLISHED)
sshd      11504    root    7u  IPv6 125274      0t0  TCP localhost:x11-ssh-offset (LISTEN)
sshd      11504    root    8u  IPv4 125275      0t0  TCP localhost:x11-ssh-offset (LISTEN)
sshd      11716    root    3r  IPv4 127456      0t0  TCP www.brz.com:ssh->bogon:55303 (ESTABLISHED)
sshd      11716    root    7u  IPv6 127537      0t0  TCP localhost:6011 (LISTEN)
sshd      11716    root    8u  IPv4 127538      0t0  TCP localhost:6011 (LISTEN)
nginx     11914  nobody   11u  IPv4  35803      0t0  TCP *:distinct (LISTEN)
添加端口号以查看谁正在占用端口。

lsof -i:端口号
例如:

注:这里是9999这个港口是我自己开的。如前一篇博客所述,如果我没有这个端口,请更改端口号

[root@hadoop01 yum.repos.d]# lsof -i:9999
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx    3953   root   11u  IPv4  35803      0t0  TCP :distinct (LISTEN)
nginx   11914 nobody   11u  IPv4  35803      0t0  TCP
:distinct (LISTEN)

方法2: netstat -tunlp命令用于显示tcp,udp港口和流程

[root@hadoop01 yum.repos.d]# netstat -tunpl
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:9999                0.0.0.0:                   LISTEN      3953/nginx
tcp        0      0 0.0.0.0:111                 0.0.0.0:
                  LISTEN      1873/rpcbind
tcp        0      0 0.0.0.0:22                  0.0.0.0:                   LISTEN      2191/sshd
tcp        0      0 127.0.0.1:631               0.0.0.0:
                  LISTEN      2072/cupsd
tcp        0      0 127.0.0.1:6010              0.0.0.0:                   LISTEN      11504/sshd
tcp        0      0 127.0.0.1:6011              0.0.0.0:
                  LISTEN      11716/sshd
tcp        0      0 0.0.0.0:42335               0.0.0.0:                   LISTEN      2017/rpc.statd
tcp        0      0 0.0.0.0:3306                0.0.0.0:
                  LISTEN      2379/mysqld
tcp        0      0 :::111                      :::                        LISTEN      1873/rpcbind
tcp        0      0 :::22                       :::
                       LISTEN      2191/sshd
tcp        0      0 ::1:631                     :::                        LISTEN      2072/cupsd
tcp        0      0 ::1:6010                    :::
                       LISTEN      11504/sshd
tcp        0      0 ::1:6011                    :::                        LISTEN      11716/sshd
tcp        0      0 :::56522                    :::
                       LISTEN      2017/rpc.statd
udp        0      0 0.0.0.0:111                 0.0.0.0:                               1873/rpcbind
udp        0      0 0.0.0.0:631                 0.0.0.0:
                              2072/cupsd
udp        0      0 0.0.0.0:776                 0.0.0.0:                               1873/rpcbind
udp        0      0 0.0.0.0:921                 0.0.0.0:
                              2017/rpc.statd
udp        0      0 0.0.0.0:32846               0.0.0.0:                               2017/rpc.statd
udp        0      0 :::111                      :::
                                   1873/rpcbind
udp        0      0 :::776                      :::                                    1873/rpcbind
udp        0      0 :::41231                    :::
                                   2017/rpc.statd
netstat -tunlp 显示所有端口和所有相应的程序,用grep管道可以过滤出所需的关键字段,

列一下9999程序占用的端口:

注:这里是9999这个港口是我自己开的。如前一篇博客所述,如果我没有这个端口,请更改端口号

netstat -tunplp | grep 端口号
例如:

[root@hadoop01 yum.repos.d]# netstat -tunplp | grep 9999
tcp        0      0 0.0.0.0:9999                0.0.0.0:*                   LISTEN      3953/nginx
使用netstat -anp进行查看

[root@hadoop01 yum.repos.d]# netstat -anp grep 9999
tcp        0      0 0.0.0.0:9999                0.0.0.0:*                   LISTEN      3953/nginx
所以这两种方法都可以查看。

作者:brz_em
来源:CSDN
原文:https://blog.csdn.net/qq\_35180983/article/details/82500424
版权声明:本文为博主原创文章,转载请附上博客链接!

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门