当我尝试在虚拟服务器的网络接口上转储一些流量时,出现错误,提示我不允许这样做:
# tcpdump -p -i eth0
tcpdump: eth0: You don't have permission to capture on that device
(socket: Operation not permitted)
我猜问题在于我的服务器提供商似乎使用了带有共享 Linux 内核的虚拟化解决方案(uname 返回“2.6.33.7-vs2.3.0.36.30.4-netcup”作为版本)。
有什么方法可以让我从单个进程转储传出的流量?
答案1
您可以尝试使用strace
命令来跟踪应用程序正在进行的系统调用。如下所示:
strace -o trace -e trace=read,write -s 8192 /path/to/my/command
这将/path/to/my/command
在 的控制下启动strace
。它将记录所有read
和write
系统调用(因此不仅仅是网络流量,还包括任何其他 i/o)到名为 的文件中trace
。它将为每个读/写调用记录最多 8192 个字符。
这对您目前的情况可能有帮助,也可能没帮助。