Answers:
有人声称可以通过创建一个充当两个套接字之间的网关并记录所有流数据的应用程序来做到这一点。因此,您无法在套接字上轻按,但如果您可以重新启动该服务并对其进行调整以使用此Guy应用程序,则可以看到所有流量。
这是文章的链接:Unix套接字嗅探器
还有另一种方法,需要您找到附加到套接字的进程ID,然后使用lsof查找套接字的文件描述符,然后使用strace点击文件描述符。
如果您可以停止正在使用套接字的任何客户端/服务器并重新配置套接字,则我总是建议第一种方法,第二种方法很棘手,并且需要您点击当前进程,这在某些应用程序上可能会导致崩溃。
希望有人以另一种方式启发我们:)
祝好运
您可以使用socat。
sudo mv /path/to/sock /path/to/sock.original
sudo socat -t100 -x -v UNIX-LISTEN:/path/to/sock,mode=777,reuseaddr,fork UNIX-CONNECT:/path/to/sock.original
上面发生的事情:首先将原始套接字移到sock.original。Socat在原始位置创建了一个新的套接字('UNIX-LISTEN'),并将所有套接字转发到原始('UNIX-connect')。-v告诉socat也将输出打印到STDERR。
您也可以尝试在套接字任一侧的进程之一上使用strace,因为这将使您观察写入/读取的内容。我在生产环境中发现,我没有socat,但确实有strace。
对于任何有用的目的,必须将-s设置为较大的值。
strace -p <pid>
观看正在运行的进程。
strace -s9999 -f $(for i in $( pidof php5-fpm ) ; do echo -n " -p $i "; done ) 2>&1 | tee /tmp/php.log
然后运行测试。您可以使用/tmp/php.log来缓慢检查日志是否太大。如果您的流量过多,请使用带有您的名字或其他名称的查询字符串进行请求,以便您可以在日志中进行搜索
printf
处理重复。printf " -p %s" $(pidof php5-fpm)
将为每个pid参数加上前缀,-p
并且编写起来更加实用。
// backup the socket
sudo mv /var/run/docker.sock /var/run/docker.sock.original
// use tcp port 8089 proxy the original socket
sudo socat TCP-LISTEN:8089,reuseaddr,fork UNIX-CONNECT:/var/run/docker.sock.original
// use the new socket to proxy the 8089 port
sudo socat UNIX-LISTEN:/var/run/docker.sock,fork TCP-CONNECT:127.0.0.1:8089
然后:
sudo tcpdump -i lo -netvv port 8089