我有以下问题。在 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
这还将记录与网络通信相关的系统调用,而不仅仅是连接建立。