Appleex
Appleex
Published on 2023-10-15 / 49 Visits
0
0

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

如何在 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才能看到
  • 具体命令
  1. 查看指定端口占用情况
netstat -tlnp | grep [端口号|程序]
# or
netstat -anp | grep [端口号|程序]

查看 22 端口

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

lsof 命令(推荐)

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

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

查看 22 端口

名词解释

  • COMMAND:进程的名称
  • PID:进程标识符
  • FD:文件描述符,应用程序通过文件描述符识别该文件。如:cwd、txt 等
  • TYPE: 文件类型,如:DIR、REG 等
  • DEVICE:指定磁盘的名称
  • SIZE:文件的大小
  • NODE:索引节点(文件在磁盘上的标识)
  • NAME:打开文件的确切名称
  1. 列出系统上被进程打开的文件的相关信息
lsof -i -P | grep [程序]

ps 命令(推荐)

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

  • 参数说明
 a	显示终端上的所有进程,包括其他用户的进程
 u 	显示进程的归属用户及内存的使用情况
 x 	显示没有控制终端的进程

-a 	显示同一终端下的所有程序
-A 	显示所有进程
-e 	显示所有进程,等于 “-A”
-f 	全格式
  • 具体命令
  1. 查看某个程序进程信息
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) 信息,包括网络端口。

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

查看 22 端口

查看 sshd 服务程序

fuser 命令

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

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

查看 22 端口占用情况

nmap 命令

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

  • 工具安装(按需)
yum -y install nmap
  • 具体命令
  1. 查看端口占用情况
nmap -p [端口号] [IP地址]

# 查看主机当前开放的端口 
nmap localhost
# 查看主机端口(1024-65535)中开放的端口
nmap -p 1024-65535 localhost

查看 22 端口占用情况

  1. 查看目标主机开放的端口
nmap -PS [IP地址]

# 探测目标主机开放的端口  
nmap -PS 192.168.1.1   

systemctl 命令

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

  • 具体命令
systemctl status sshd

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

journalctl | grep -i [程序]

查看 sshd 服务程序

FAQ

参考文献


Comment