/tmp/memcached.sock
),因为它只需要接收来自位于同一服务器上的网站的消息。它似乎工作正常,但我也想通过外壳与memcached通信,以检查它是否在执行我认为正在执行的操作。
memcached通过简单的ASCII协议接受消息(如果我正确理解)。如果它正在侦听TCP / IP,我可以通过例如向它发送消息。
nc
:$ echo "stats settings" | nc localhost 11211
但是我不知道如何将文本发送到域套接字。
在笔记本电脑上(运行OS X Lion),
nc
和telnet
都有使用域套接字的选项(分别为-U
和-u
)。但是,在我的Debian Squeeze网络服务器上,这些选项不存在。#1 楼
对于netcat-openbsd
,有一个-U
选项。如果您没有安装,则可能安装了netcat-traditional
。我建议切换。示例命令:
nc -U /var/run/socket
#2 楼
使用socat
(“两个数据通道之间的双向数据中继”),您可以像这样连接到unix域套接字:$ socat - UNIX-CONNECT:/tmp/memcached.sock
#3 楼
netcat-openbsd
支持连接到UNIX域套接字。使用此功能,您可以连接到UNIX域流套接字或UNIX域数据报套接字,因此必须将套接字的类型告诉为netcat。例如,Linux中的/dev/log
文件是UNIX域数据报套接字套接字,因此nc -U /dev/log
无法正常工作。而是使用nc -uU /dev/log
。与-U一起使用-U告诉netcat它是UNIX域数据报套接字。nc -U /tmp/socket #Connect to UNIX-domain stream socket
nc -uU /tmp/socket #Connect to UNIX-domain datagram socket
类似地,在使用
socat
时,请使用UNIX-CLIENT选项。使用此选项,您可以同时连接到UNIX域流和UNIX域数据报套接字。在其手册页(man socat)中,“它首先尝试连接,如果失败,则假定它是一个数据报套接字,因此支持两种类型。”
socat - UNIX-CLIENT:/dev/socket #connect to UNIX-domain socket, irrespective of its type
评论
出色的细节,关于插座类型的区别。添加-l将创建它,例如sudo nc -luU / tmp / socket#创建并监听Unix数据报套接字。
– Nagev
20/11/11在18:31
#4 楼
您可以在Debian上使用socat。要安装它:
# apt-get install socat
评论
看起来不错。我的服务器上似乎没有安装socat,但肯定可用:packages.debian.org/squeeze/socat
– Paul D. Waite
2011-12-13 22:30
#5 楼
如果您碰巧在仅安装了busybox的系统上,则它似乎不支持unix域套接字(-U
选项不存在),但是我发现了以下作品:$ echo "stats slabs" | nc local:/tmp/memcached.sock
STAT active_slabs 0
STAT total_malloced 0
END
这对于创建高山容器的运行状况检查非常有帮助。
评论
您能否添加所需的配置选项以使其正常工作?启用CONFIG_FEATURE_UNIX_LOCAL是不够的。我也玩过CONFIG_NC_EXTRA和CONFIG_NC_110_COMPAT,但是两者都没有帮助。
– yman
20年4月2日在8:17
@yman我只是在Alpine容器中使用预编译的二进制文件。我认为配置设置为git.alpinelinux.org/aports/tree/main/busybox/busyboxconfig或git.alpinelinux.org/aports/tree/main/busybox / ...
–格雷格·布雷(Greg Bray)
20年4月2日在8:23
似乎当然需要同时启用NC_EXTRA和NC_110_COMPAT配置选项,以及CONFIG_FEATURE_UNIX_LOCAL。请考虑扩大答案。
– yman
20年4月2日,9:32
评论
所以netcat会在/ var / run / socket中创建一个新文件?有没有办法重用现有文件?
–亚历山大·米尔斯(Alexander Mills)
19年4月4日在19:22
@AlexanderMills如果告诉它侦听(-l),它将创建文件。否则,它期望套接字已经存在(并且已经在监听它)。因此,答案中的示例命令不会创建文件。
–德罗伯特
19-6-5 '18:51