Linux系统之查看进程监听端口方法

简介: Linux系统之查看进程监听端口方法

一、端口监听介绍

在Linux系统中,,每个服务启动的时候都会通过一个端口来进行监听,所有端口都与OS中的进程ID或服务相关联。在日常的Linux系统运维中,我们有时需要某些特定服务的进程正在侦听哪个端口号。

二、使用netstat命令

1.netstat命令介绍

netstat命令 用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。

2.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"参数相同。

3.安装netstat工具

在最小化安装中,默认是没有安装netstat工具,需要手动进行安装。
yum -y install net-tools

4.列出所有监听 tcp 端口

只列出所有监听 tcp 端口
[root@master ~]# netstat -lt  
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 localhost:igrs          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:mysql           0.0.0.0:*               LISTEN     
tcp        0      0 localhost:38443         0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:webcache        0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN     
tcp        0      0 localhost:38457         0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:pcsync-https    0.0.0.0:*               LISTEN     
tcp        0      0 localhost:5533          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:zabbix-trapper  0.0.0.0:*               LISTEN     
tcp6       0      0 localhost:igrs          [::]:*                  LISTEN     
tcp6       0      0 [::]:mysql              [::]:*                  LISTEN     
tcp6       0      0 localhost:38443         [::]:*                  LISTEN     
tcp6       0      0 [::]:webcache           [::]:*                  LISTEN     
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN     
tcp6       0      0 localhost:38457         [::]:*                  LISTEN     
tcp6       0      0 [::]:pcsync-https       [::]:*                  LISTEN     
tcp6       0      0 [::]:zabbix-trapper     [::]:*                  LISTEN   

5.显示TCP端口的统计信息

[root@master ~]# netstat -st
IcmpMsg:
    InType3: 15
    InType8: 4
    OutType0: 4
    OutType3: 139486
Tcp:
    4028 active connections openings
    17 passive connection openings
    4 failed connection attempts
    1392 connection resets received
    3 connections established
    609725 segments received
    615954 segments send out
    5878 segments retransmited
    810 bad segments received.
    11476 resets sent
UdpLite:
TcpExt:
    20 invalid SYN cookies received
    1227 packets pruned from receive queue because of socket buffer overrun
    602 TCP sockets finished time wait in fast timer
    693 delayed acks sent
    Quick ack mode was activated 369 times
    17 packets directly queued to recvmsg prequeue.
    154418 packet headers predicted
    16974 acknowledgments not containing data payload received
    48604 predicted acknowledgments
    19 times recovered from packet loss by selective acknowledgements
    1 bad SACK blocks received
    Detected reordering 1 times using FACK
    2 congestion windows fully recovered without slow start
    224 congestion windows recovered without slow start after partial ack
    7 timeouts after SACK recovery
    4 timeouts in loss state
    19 fast retransmits
    1 forward retransmits
    1544 other TCP timeouts
    TCPLossProbes: 692
    TCPLossProbeRecovery: 69
    2 SACK retransmits failed
    4074 packets collapsed in receive queue due to low socket buffer
    357 DSACKs sent for old packets
    110 DSACKs sent for out of order packets
    290 DSACKs received
    484 connections reset due to unexpected data
    41 connections reset due to early user close
    449 connections aborted due to timeout
    TCPDSACKIgnoredNoUndo: 143
    TCPSpuriousRTOs: 5
    TCPSackShiftFallback: 179
    IPReversePathFilter: 8
    TCPRcvCoalesce: 327751
    TCPOFOQueue: 340347
    TCPOFOMerge: 108
    TCPChallengeACK: 1691
    TCPSYNChallenge: 1689
    TCPFromZeroWindowAdv: 1
    TCPToZeroWindowAdv: 1
    TCPWantZeroWindowAdv: 3483
    TCPSynRetrans: 1804
    TCPOrigDataSent: 137805
    TCPHystartTrainDetect: 8
    TCPHystartTrainCwnd: 166
IpExt:
    InNoRoutes: 29
    InMcastPkts: 37586
    InBcastPkts: 143772
    InOctets: 1235902418
    OutOctets: 634853490
    InMcastOctets: 1353160
    InBcastOctets: 23982240
    InNoECTPkts: 2468463

6.查看某个服务监听端口

日常使用最多的是这个命令,加上-tunlp选项。
[root@master ~]# netstat -tunlp |grep 100
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      6172/docker-proxy   
tcp6       0      0 :::10051                :::*                    LISTEN      6179/docker-proxy   

三、使用ss命令

1.ss命令介绍

ss命令 用来显示处于活动状态的套接字信息。ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。

2.ss命令帮助

-h, --help      帮助信息
-V, --version   程序版本信息
-n, --numeric   不解析服务名称
-r, --resolve   解析主机名
-a, --all       显示所有套接字(sockets)
-l, --listening 显示监听状态的套接字(sockets)
-o, --options   显示计时器信息
-e, --extended  显示详细的套接字(sockets)信息
-m, --memory    显示套接字(socket)的内存使用情况
-p, --processes 显示使用套接字(socket)的进程
-i, --info      显示 TCP内部信息
-s, --summary   显示套接字(socket)使用概况
-4, --ipv4      仅显示IPv4的套接字(sockets)
-6, --ipv6      仅显示IPv6的套接字(sockets)
-0, --packet    显示 PACKET 套接字(socket)
-t, --tcp       仅显示 TCP套接字(sockets)
-u, --udp       仅显示 UCP套接字(sockets)
-d, --dccp      仅显示 DCCP套接字(sockets)
-w, --raw       仅显示 RAW套接字(sockets)
-x, --unix      仅显示 Unix套接字(sockets)
-f, --family=FAMILY  显示 FAMILY类型的套接字(sockets),FAMILY可选,支持  unix, inet, inet6, link, netlink
-A, --query=QUERY, --socket=QUERY
      QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]
-D, --diag=FILE     将原始TCP套接字(sockets)信息转储到文件
 -F, --filter=FILE  从文件中都去过滤器信息
       FILTER := [ state TCP-STATE ] [ EXPRESSION ]

3.查看某个服务监听端口

根netstat用法一样,但是显示的信息更为详细。
[root@master ~]# ss -tunlp |grep 100
tcp    LISTEN     0      100    127.0.0.1:25                    *:*                   users:(("master",pid=3648,fd=13))
tcp    LISTEN     0      128       *:10051                 *:*                   users:(("docker-proxy",pid=6172,fd=4))
tcp    LISTEN     0      100     ::1:25                   :::*                   users:(("master",pid=3648,fd=14))
tcp    LISTEN     0      128      :::10051                :::*                   users:(("docker-proxy",pid=6179,fd=4))

四、使用lsof命令

1.lsof命令介绍

lsof命令 用于查看你进程打开的文件,打开文件的进程,进程打开的端口(TCP、UDP)。需要root用户权限执行。

2.lsof命令帮助

-a:列出打开文件存在的进程;
-c<进程名>:列出指定进程所打开的文件;
-g:列出GID号进程详情;
-d<文件号>:列出占用该文件号的进程;
+d<目录>:列出目录下被打开的文件;
+D<目录>:递归列出目录下被打开的文件;
-n<目录>:列出使用NFS的文件;
-i<条件>:列出符合条件的进程(协议、:端口、 @ip )
-p<进程号>:列出指定进程号所打开的文件;
-u:列出UID号进程详情;
-h:显示帮助信息;
-v:显示版本信息

3.安装lsof工具

默认在centos7.6最小化安装中没有此工具,需要手动安装lsof工具。
yum -y install lsof

4.查看端口号下所有进程

[root@master ~]# lsof -i :10051
COMMAND    PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
docker-pr 6172 root    4u  IPv4 1470713      0t0  TCP *:zabbix-trapper (LISTEN)
docker-pr 6179 root    4u  IPv6 1468048      0t0  TCP *:zabbix-trapper (LISTEN)

五、使用fuser命令

1.fuser命令介绍

fuser命令 用于报告进程使用的文件和网络套接字。fuser命令列出了本地进程的进程号,那些本地进程使用file,参数指定的本地或远程文件。

2.fuser命令帮助

-a:显示命令行中指定的所有文件;
-k:杀死访问指定文件的所有进程;
-i:杀死进程前需要用户进行确认;
-l:列出所有已知信号名;
-m:指定一个被加载的文件系统或一个被加载的块设备;
-n:选择不同的名称空间;
-u:在每个进程后显示所属的用户名。

3.安装fuser工具

默认在centos7.6最小化安装中没有此工具,需要手动安装fuser工具。
 yum -y install psmisc

4.查看某个服务详细信息

  • 先检查某个端口对应进程的PID
[root@master ~]# fuser 10051/tcp
10051/tcp:            6172  6179
  • 使用ps查询对应进程详细信息
[root@master ~]# ps -ef |grep 6172
root      6172  6908  0 Feb25 ?        00:00:00 /usr/local/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 10051 -container-ip 172.66.10.12 -container-port 10051
root     24000 18100  0 15:48 pts/0    00:00:00 grep --color=auto 6172
[root@master ~]# ps -ef |grep 6179
root      6179  6908  0 Feb25 ?        00:00:00 /usr/local/bin/docker-proxy -proto tcp -host-ip :: -host-port 10051 -container-ip 172.66.10.12 -container-port 10051
root     24002 18100  0 15:48 pts/0    00:00:00 grep --color=auto 6179

5.查询端口及对应进程

[root@master ~]#  fuser -v -n tcp 10051
                     USER        PID ACCESS COMMAND
10051/tcp:           root       6172 F.... docker-proxy
                     root       6179 F.... docker-proxy
相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
7天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
31 3
|
7天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
26 2
|
17天前
|
Linux 应用服务中间件 Shell
linux系统服务二!
本文详细介绍了Linux系统的启动流程,包括CentOS 7的具体启动步骤,从BIOS自检到加载内核、启动systemd程序等。同时,文章还对比了CentOS 6和CentOS 7的启动流程,分析了启动过程中的耗时情况。接着,文章讲解了Linux的运行级别及其管理命令,systemd的基本概念、优势及常用命令,并提供了自定义systemd启动文件的示例。最后,文章介绍了单用户模式和救援模式的使用方法,包括如何找回忘记的密码和修复启动故障。
39 5
linux系统服务二!
|
17天前
|
Linux 应用服务中间件 Shell
linux系统服务!!!
本文详细介绍了Linux系统(以CentOS7为例)的启动流程,包括BIOS自检、读取MBR信息、加载Grub菜单、加载内核及驱动程序、启动systemd程序加载必要文件等五个主要步骤。同时,文章还对比了CentOS6和CentOS7的启动流程图,并分析了启动流程的耗时。此外,文中还讲解了Linux的运行级别、systemd的基本概念及其优势,以及如何使用systemd管理服务。最后,文章提供了单用户模式和救援模式的实战案例,帮助读者理解如何在系统启动出现问题时进行修复。
38 3
linux系统服务!!!
|
7天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
28 3
|
10天前
|
安全 Linux 数据安全/隐私保护
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。本文介绍了使用 `ls -l` 和 `stat` 命令查找文件所有者的基本方法,以及通过文件路径、通配符和结合其他命令的高级技巧。还提供了实际案例分析和注意事项,帮助读者更好地掌握这一操作。
29 6
|
10天前
|
Linux
在 Linux 系统中,`find` 命令是一个强大的文件查找工具
在 Linux 系统中,`find` 命令是一个强大的文件查找工具。本文详细介绍了 `find` 命令的基本语法、常用选项和具体应用示例,帮助用户快速掌握如何根据文件名、类型、大小、修改时间等条件查找文件,并展示了如何结合逻辑运算符、正则表达式和排除特定目录等高级用法。
37 6
|
11天前
|
机器学习/深度学习 自然语言处理 Linux
Linux 中的机器学习:Whisper——自动语音识别系统
本文介绍了先进的自动语音识别系统 Whisper 在 Linux 环境中的应用。Whisper 基于深度学习和神经网络技术,支持多语言识别,具有高准确性和实时处理能力。文章详细讲解了在 Linux 中安装、配置和使用 Whisper 的步骤,以及其在语音助手、语音识别软件等领域的应用场景。
42 5
|
11天前
|
缓存 运维 监控
【运维必备知识】Linux系统平均负载与top、uptime命令详解
系统平均负载是衡量Linux服务器性能的关键指标之一。通过使用 `top`和 `uptime`命令,可以实时监控系统的负载情况,帮助运维人员及时发现并解决潜在问题。理解这些工具的输出和意义是确保系统稳定运行的基础。希望本文对Linux系统平均负载及相关命令的详细解析能帮助您更好地进行系统运维和性能优化。
34 3
|
11天前
|
监控 网络协议 算法
Linux内核优化:提升系统性能与稳定性的策略####
本文深入探讨了Linux操作系统内核的优化策略,旨在通过一系列技术手段和最佳实践,显著提升系统的性能、响应速度及稳定性。文章首先概述了Linux内核的核心组件及其在系统中的作用,随后详细阐述了内存管理、进程调度、文件系统优化、网络栈调整及并发控制等关键领域的优化方法。通过实际案例分析,展示了这些优化措施如何有效减少延迟、提高吞吐量,并增强系统的整体健壮性。最终,文章强调了持续监控、定期更新及合理配置对于维持Linux系统长期高效运行的重要性。 ####

热门文章

最新文章