运维 | 如何查看端口或程序占用情况 | 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 服务程序

参考文献

猜你喜欢

转载自blog.csdn.net/weixin_39122254/article/details/133841701