Linux:如何找出我的应用程序使用了哪些端口(无需 root 身份)?

Linux:如何找出我的应用程序使用了哪些端口(无需 root 身份)?

我有以下问题。在 CentOS 机器上,我运行一个连接到另一个系统的应用程序。我有兴趣找出通信发生在哪些端口(输入/输出)。该应用程序仅运行一秒钟左右,我无法获取其 pid。有没有办法启动对我的应用程序的网络监控?记录所有使用的端口?

我不是 CentOS 机器上的 root 身份。

额外信息:

  • 该应用程序是一个 Java 包装器,其基本功能是用 C 编写的。
  • 我无法使用 tcpdump/wireshark。
  • 由于我的应用程序是唯一使用远程服务器的应用程序,因此基于远程 IP 地址的监控也可以。

提前致谢!

答案1

尝试通过 strace 运行它。当然,这不是一个简单的工具,因为您需要了解名称解析、打开套接字和其他网络通信的各种系统调用。

更简单的解决方案可能是只运行 tcpdump/wireshark。首先停止任何其他应用程序访问网络。

答案2

尝试

strace -e trace=connect,socket,bind,accept,listen -f /path/to/myapp

这将仅记录与您的兴趣相关的系统调用。

您也可以尝试

strace -e trace=network -f /path/to/myapp

这还将记录与网络通信相关的系统调用,而不仅仅是连接建立。

相关内容