运维 | 如何查看端口或程序占用情况 | linux

2023年 10月 15日 93.9k 0

运维 | 如何查看端口或程序占用情况 | linux

前言

本期主要介绍了 LINUX 中如何查看某个端口或程序的使用情况,希望对大家有所帮助。

快速使用

netstat 命令(推荐)

netstat 命令可以显示网络连接、路由表和网络接口信息等。可以使用 netstat 命令查看某个端口被哪个进程占用

  • 工具安装(按需)
yum -y install net-tools
  • 参数说明
-a (all)显示所有选项,默认不显示 LISTEN 相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。(重要)
-l 仅列出有在 Listen (监听) 的服務状态

-p 显示进程号和进程名。显示与特定协议相关的状态,常见的协议有 TCP 和 UDP。
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。

# LISTEN 和 LISTENING 的状态只有用-a或者-l才能看到
  • 具体命令
  • 查看指定端口占用情况
  • netstat -tlnp | grep [端口号|程序]
    # or
    netstat -anp | grep [端口号|程序]
    

    查看 22 端口

  • 查看所有端口占用情况
  • netstat -utlnp
    

    lsof 命令(推荐)

    lsof(list open files) 命令可以列出当前系统中打开的所有文件,包括网络端口。

    • 工具安装(按需)
    yum -y install lsof
    
    • 具体命令
  • 查看指定端口占用情况
  • lsof -i :[端口号]
    

    查看 22 端口

    名词解释
    COMMAND:进程的名称
    PID:进程标识符
    FD:文件描述符,应用程序通过文件描述符识别该文件。如:cwd、txt 等
    TYPE: 文件类型,如:DIR、REG 等
    DEVICE:指定磁盘的名称
    SIZE:文件的大小
    NODE:索引节点(文件在磁盘上的标识)
    NAME:打开文件的确切名称

  • 列出系统上被进程打开的文件的相关信息
  • lsof -i -P | grep [程序]
    

    ps 命令(推荐)

    ps 命令可以列出当前系统中正在运行的进程信息。

    • 参数说明
    a 显示终端上的所有进程,包括其他用户的进程
    u 显示进程的归属用户及内存的使用情况
    x 显示没有控制终端的进程
    
    -a 显示同一终端下的所有程序
    -A 显示所有进程
    -e 显示所有进程,等于 “-A”
    -f 全格式
    
    • 具体命令
  • 查看某个程序进程信息
  • ps -ef | grep [程序]
    # or
    ps -aux | grep [程序]
    

    先查看 sshd 进程

    再根据 PID 查看端口占用

    ps -u root 根据用户过滤进程
    ps -aux --sort -pcpu | less 根据 CPU 使用来升序排序
    ps -aux --sort -pmem | less 根据用户过滤进程
    ps -aux --sort -pcpu,+pmem | head -n 10 查询全前10个使用cpu和内存最高的应用

    ss 命令

    ss 命令可以列出当前系统中打开的套接字(socket)信息,包括网络端口。

    • 具体命令
  • 查看指定端口或程序占用情况
  • ss -tlnp | grep [端口号|程序]
    

    查看 22 端口

    查看 sshd 服务程序

    fuser 命令

    fuser 命令可以查看某个文件或目录被哪个进程占用。对于网络端口,也可以使用 fuser 命令进行查询。

    • 具体命令
  • 查看指定端口占用情况
  • fuser -v [端口号]/tcp
    

    查看 22 端口占用情况

    nmap 命令

    nmap(Network exploration tool and security / port scanner)是功能强大的网络扫描工具,可以扫描单个主机和大型网络,它主要用于安全审核和渗透测试,是端口扫描的首选工具。

    • 工具安装(按需)
    yum -y install nmap
    
    • 具体命令
  • 查看端口占用情况
  • nmap -p [端口号] [IP地址]
    
    # 查看主机当前开放的端口 
    nmap localhost
    # 查看主机端口(1024-65535)中开放的端口
    nmap -p 1024-65535 localhost
    

    查看 22 端口占用情况

  • 查看目标主机开放的端口
  • nmap -PS [IP地址]
    
    # 探测目标主机开放的端口  
    nmap -PS 192.168.1.1   
    

    systemctl 命令

    systemctl 是 systemd 系统的控制管理器和服务管理器。它取代了旧的 SysV 初始化系统管理,目前大多数现代 Linux 操作系统都采用了 systemd。

    • 具体命令
    systemctl status sshd
    

    大部分情况下,以上的输出不会显示进程的实际端口号。这时更建议使用以下这个 journalctl 命令检查日志文件中的详细信息

    journalctl | grep -i [程序]
    

    查看 sshd 服务程序

    参考文献

    • LINUX中端口是否被占用应该如何查看呢?

    相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论