我正在运行Debian Squeeze网络服务器。我已经在上面安装了memcached,并配置了memcached以监听Unix域套接字(位于/tmp/memcached.sock),因为它只需要接收来自位于同一服务器上的网站的消息。

它似乎工作正常,但我也想通过外壳与memcached通信,以检查它是否在执行我认为正在执行的操作。

memcached通过简单的ASCII协议接受消息(如果我正确理解)。如果它正在侦听TCP / IP,我可以通过例如向它发送消息。 nc

$ echo "stats settings" | nc localhost 11211


但是我不知道如何将文本发送到域套接字。

在笔记本电脑上(运行OS X Lion),nctelnet都有使用域套接字的选项(分别为-U-u)。但是,在我的Debian Squeeze网络服务器上,这些选项不存在。

#1 楼

对于netcat-openbsd,有一个-U选项。如果您没有安装,则可能安装了netcat-traditional。我建议切换。

示例命令:
nc -U /var/run/socket

评论


所以netcat会在/ var / run / socket中创建一个新文件?有没有办法重用现有文件?

–亚历山大·米尔斯(Alexander Mills)
19年4月4日在19:22

@AlexanderMills如果告诉它侦听(-l),它将创建文件。否则,它期望套接字已经存在(并且已经在监听它)。因此,答案中的示例命令不会创建文件。

–德罗伯特
19-6-5 '18:51



#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