当前位置: 首页 > news >正文

Linux服务器怎样根据端口找到对应启动的服务

# Linux服务器怎样根据端口找到对应启动的服务

在Linux服务器中,有时候我们会遇到某个端口被占用的情况,但不清楚是哪个服务占用了这个端口。这时候,我们需要通过一些命令来查找对应的进程和服务。本文将详细介绍如何根据端口找到对应启动的服务。

## 1. 使用 `netstat` 命令

`netstat` 是一个网络统计工具,可以显示网络连接、路由表、接口状态等信息。我们可以通过它来查找占用特定端口的进程。

### 查看所有监听的端口
```bash
netstat -tuln
  • -t: 显示TCP协议的信息
  • -u: 显示UDP协议的信息
  • -l: 只显示正在监听的端口
  • -n: 以数字形式显示IP地址和端口号,而不是解析主机名和服务名

运行上述命令后,会列出所有正在监听的端口及其对应的进程ID(PID)。

根据端口查找进程

假设我们知道某个端口被占用,可以通过以下命令找到对应的PID:

netstat -tuln | grep :8080
  • :8080 是我们要查找的端口号

运行后会显示类似如下的结果:

tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      1234/java

其中,1234 是PID,java 是对应的进程名称。

2. 使用 ss 命令

ss 是一个更高效的网络统计工具,功能类似 netstat,但速度更快。

查看所有监听的端口

ss -tuln
  • -t: 显示TCP协议的信息
  • -u: 显示UDP协议的信息
  • -l: 只显示正在监听的端口
  • -n: 以数字形式显示IP地址和端口号

根据端口查找进程

ss -tuln | grep :8080

运行后会显示类似如下的结果:

tcp   LISTEN  0      128          *:8080                *:*               users:(("java",1234,5))

其中,1234 是PID,java 是对应的进程名称。

3. 使用 lsof 命令

lsof 是一个列出当前系统打开文件的工具,也可以用来查找占用特定端口的进程。

根据端口查找进程

sudo lsof -i :8080
  • -i: 指定网络相关的文件
  • :8080: 要查找的端口号

运行后会显示类似如下的结果:

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    1234 root   5u  IPv6  7890      0t0  TCP *:8080 (LISTEN)

其中,java 是进程名称,1234 是PID。

4. 使用 firewalld 查找端口

如果你的服务器启用了 firewalld 防火墙,可以通过它来查找某个端口是否被开放以及对应的服务。

查看所有开放的端口

sudo firewall-cmd --list-ports

运行后会显示类似如下的结果:

80/tcp 443/tcp 8080/tcp

查找对应的服务

假设我们发现 8080 端口被开放,可以通过以下命令查找对应的区域和服务:

sudo firewall-cmd --get-service=8080

不过,通常情况下,防火墙只是开放了端口,并不会直接关联到具体的进程或服务。因此,可能需要结合其他工具(如 netstatlsof)来进一步查找。

5. 使用 systemd 查找服务

如果你的服务器使用的是 systemd 系统初始化系统,可以通过以下命令查找某个端口对应的服务:

查看所有正在运行的服务

systemctl list-units --type=service --state=running

查找占用特定端口的服务

假设我们知道某个端口被占用,可以通过以下命令找到对应的进程和服务:

sudo systemctl status -p MainPID $(netstat -tuln | grep :8080 | awk '{print $7}' | sed 's/\/.*//')
  • netstat -tuln | grep :8080: 查找占用 8080 端口的进程
  • awk '{print $7}': 提取进程名称
  • sed 's/\/.*//': 去掉路径,只保留进程名称

运行后会显示对应的进程和服务信息。

6. 手动查找服务配置文件

如果你知道某个端口对应的服务类型(如 HTTP、MySQL 等),可以通过手动查找服务的配置文件来确认其监听的端口。

查找 HTTP 服务

sudo grep -r "8080" /etc/apache2/ /etc/nginx/

查找 MySQL 服务

sudo grep -r "3306" /etc/mysql/

总结

通过以上几种方法,我们可以轻松地找到占用特定端口的服务。具体选择哪种方法取决于你的系统环境和个人偏好:

  • 如果你熟悉 netstatss,可以直接使用它们。
  • 如果你需要更详细的信息,可以使用 lsof
  • 如果你使用的是 systemd 系统,可以通过 systemctl 查找服务。
  • 如果你知道服务的大致类型,可以通过手动查找配置文件来确认。

希望这篇文章能够帮助你在 Linux 服务器中快速找到占用特定端口的服务!

相关文章:

  • TCSVT审稿学习笔记
  • 3.28-2 jmeter读取mysql
  • spring @SpringBootApplication 注解详解
  • 使用AURIX ADS部署tensorflow lite到Tricore TC2XX/TC3XX
  • EMC知识学习三
  • ecovadis评估有什么流程?对企业发展的重要意义
  • HTML应用指南:利用GET请求获取全国无印良品门店位置信息
  • 19726 星际旅行
  • 【SDMs分析1】基于ENMTools R包的生态位分化分析和图像绘制(identity.test())
  • <wbr>标签的用途,在处理长文本换行时如何发挥作用?
  • 算法 | 河马优化算法原理,公式,应用,算法改进及研究综述,matlab代码
  • Android WLAN offload Data Supplementary Service
  • Centos8 系統Lnmp服務器環境搭建
  • 高效加盖骑缝章:PDF文件处理的实用解决方案
  • 跨境TRS投资操作指南与系统解决方案
  • EspressoSample深度解析:在CircleCI上高效运行Android UI测试
  • 【Linux】kylin桌面进入pe模式,livecd模式
  • DTMF从2833到inband的方案
  • arm64位FFmpeg与X264库
  • 详细解析int GetLength() const;声明中的const是修饰什么的?
  • 美国失去最后的AAA主权评级,继标普、惠誉后再遭穆迪降级
  • 最高人民法院原副院长唐德华逝世,享年89岁
  • 上海市国防动员办公室副主任吴斌接受审查调查
  • 4月份全国企业销售收入同比增长4.3%
  • 人民日报仲音:大力纠治违规吃喝顽瘴痼疾
  • 威尼斯建筑双年展总策划:山的另一边有什么在等着我们