linux查看网络链接的具体进程

server/2024/10/20 17:49:29/

问题

linux上有多个程序,都在访问同一个数据库,如何知道哪些网络连接,是由那个程序的进程发出的,通过netstat看不出具体是那个进程产生的链接。

解决方案1

在 Linux 上,如果你想查看哪个进程发起了对数据库的网络连接,netstat 不提供直接的进程信息,但是你可以使用 sslsof 命令,结合 PID(进程ID)来识别。

方法 1: 使用 ss 命令

ss 是一种显示套接字统计信息的工具,类似于 netstat,但功能更强大。你可以通过以下命令来列出与数据库(假设是 MySQL)的网络连接,并显示发起连接的进程。

ss -p -t -a | grep 3306
  • -p: 显示进程信息
  • -t: 仅显示 TCP 连接
  • -a: 显示所有状态(包括监听中的)

这个命令会显示所有与 MySQL 端口(3306)相关的网络连接,并且会附带发起这些连接的进程ID(PID)和程序名称。

方法 2: 使用 lsof 命令

lsof 是另一个非常强大的工具,可以查看进程打开的文件和网络连接。可以使用 lsof 来检查哪个进程连接到了特定的端口。

lsof -i :3306

这会显示与 3306 端口相关的所有连接,并列出每个连接对应的进程ID(PID)和进程名称。

方法 3: 使用 netstatps 结合查找(需要 root 权限)

虽然 netstat 本身无法显示进程信息,但你可以结合 psgrep 来查看网络连接的 PID。

netstat -antp | grep 3306
  • -p: 显示 PID 和进程名称(需要 root 权限)
  • -t: 显示 TCP 连接
  • -a: 显示所有连接,包括监听状态的

这个命令会列出与数据库端口相关的所有连接,并包含发起连接的进程的 PID 和进程名称。

这几种方法可以帮助你确定哪个程序的进程发起了到数据库的网络连接。

解决方案2

在这种情况下,如果你想确定哪些进程(服务 B、C、D)与服务 A(监听 8081 端口)建立了连接,可以采取以下几种方法来追踪和确定这些连接:

方法 1: 使用 netstatss 命令

netstatss 命令可以显示网络连接信息。ss 命令相对于 netstat 更加高效且提供了更多的选项。

使用 ss 命令:
ss -tanp '( sport == :8081 or dport == :8081 )'

这个命令会显示所有与 8081 端口相关的 TCP 连接,包括本地端口和服务 A 的进程信息。

使用 netstat 命令:
netstat -tanp | grep ':8081'

这个命令会过滤出所有与 8081 端口相关的 TCP 连接,并显示关联的进程信息。

方法 2: 使用 lsof 命令

lsof 命令可以用来查找哪个进程打开了某个端口。你可以使用如下命令:

lsof -i :8081

这个命令会显示所有使用 8081 端口的进程,包括建立连接的服务 B、C、D 的信息。

方法 3: 使用 tcpdump 捕获网络

如果上述方法仍然无法提供足够的信息,你可以使用 tcpdump 来捕获网络包,并查看具体的连接信息。

捕获所有与 8081 端口相关的流量:
sudo tcpdump -n -i any 'tcp port 8081'

这个命令会捕获所有与 8081 端口相关的 TCP 流量,并显示源 IP 和端口、目的 IP 和端口等信息。

方法 4: 查看服务的日志或使用调试工具

如果你的服务 B、C、D 在发起请求时有日志记录,你可以检查这些日志来确定哪些服务发起了请求。此外,还可以在服务代码中添加调试信息或使用调试工具来追踪请求的发生。

方法 5: 使用 strace 追踪系统调用

如果你对某个特定进程的行为感兴趣,可以使用 strace 来追踪系统调用,从而查看该进程是否发起了网络连接。

例如追踪 PID 为 1234 的进程的网络相关调用:
strace -p 1234 -e trace=connect

这会显示进程 1234 发起的所有连接尝试。

通过上述方法,你应该能够确定哪些进程和服务与 8081 端口建立了连接。选择哪种方法取决于你的具体需求和环境。


http://www.ppmy.cn/server/113885.html

相关文章

【Kafka】怎么解决Kafka消费者消费堆积问题?

文章目录 一、引言二、Kafka消费堆积原因分析三、解决方案1. 重制消费点位2. 增加消费者数量3. 优化消费能力 四、重制消费点位五、增加消费者数量六、优化消费能力七、总结八、参考文献九、附录 摘要:在分布式系统中,Kafka作为消息队列中间件&#xff0…

以太网通信之UDP

免责声明: 本文所提供的信息和内容仅供参考。作者对本文内容的准确性、完整性、及时性或适用性不作任何明示或暗示的保证。在任何情况下,作者不对因使用本文内容而导致的任何直接或间接损失承担责任,包括但不限于数据丢失、业务中断或其他经济…

信息熵|atttion矩阵的注意力熵

显著图可以看作是模型的注意力图,它标识了模型对输入图像某些区域的关注程度。我们使用 blob 区域(连通的显著区域)来检测模型关注的部分,然后计算这些区域的概率分布,再通过熵来衡量这些区域的“信息量”或“分散度”…

《从C/C++到Java入门指南》- 24.方法的重载

方法的重载 public class Main {public static void main(String args[]) {System.out.println(add(3, 6.0));}public static int add(int a, int b) {return a b;}public static double add(double a, double b) {return a b;}public static float add(float a, float b) {…

(汇总)Mybatis超全三万字详解

(汇总)Mybatis超全详解 文章目录 (汇总)Mybatis超全详解1、Mybatis2、mybatis 简介2.1、什么是mybatis2.2、mybatis能干什么2.3、特点 3、mybatis的第一个helloworld程序3.1、导包3.2、编写mybatis.xml配置文件3.3、编写实体3.4、…

[论文笔记]QLoRA: Efficient Finetuning of Quantized LLMs

引言 今天带来LoRA的量化版论文笔记——QLoRA: Efficient Finetuning of Quantized LLMs 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 我们提出了QLoRA,一种高效的微调方法,它在减少内存使用…

支持向量机 (Support Vector Machines, SVM)

支持向量机 (Support Vector Machines, SVM) 通俗易懂算法 支持向量机(SVM)是一种用于分类和回归任务的机器学习算法。在最简单的情况下,SVM是一种线性分类器,适用于二分类问题。它的基本思想是找到一个超平面(在二维…

微信小程序:navigateTo跳转无效

关于 navigateTo 跳转无效问题,在IOS、模拟器上面都能正常跳转,但是在安卓上面不能跳转,过了一段时间IOS也不能跳转了。仔细找了下问题结果是要跳转的页面是tab,不能使用navigateTo 取跳转修改为: wx.switchTab({url:…