Debian Squeeze 웹 서버를 실행하고 있습니다. 나는 memcached를 설치 /tmp/memcached.sock
하고 동일한 서버에있는 웹 사이트에서 메시지를 수신해야하기 때문에 유닉스 도메인 소켓 (at ) 을 수신하도록 memcached를 구성 했습니다.
잘 작동하는 것 같지만 쉘을 통해 memcached와 통신하여 내가하고있는 일을하고 있는지 확인하고 싶습니다.
memcached는 간단한 ASCII 프로토콜을 통해 메시지를 수락합니다 (정확하게 이해하면). TCP / IP에서 수신 대기 중이라면 다음과 같이 메시지를 보낼 수 있습니다 nc
.
$ echo "stats settings" | nc localhost 11211
그러나 대신 텍스트를 도메인 소켓에 보내는 방법을 알 수 없습니다.
(OS X 사자를 실행) 내 노트북에서 모두 nc
하고 telnet
(가지 옵션이 있습니다 -U
및 -u
도메인 소켓을 사용하는 각각을). 그러나 Debian Squeeze 웹 서버에는 이러한 옵션이 없습니다.
답변
함께 netcat-openbsd
하는이 -U
옵션을 선택합니다. 없는 경우 netcat-traditional
대신 설치 했을 것입니다 . 전환을 제안합니다.
명령 예 :
nc -U /var/run/socket
답변
으로 socat
(A ‘두 개의 데이터 채널 간의 양방향 데이터 릴레이’)이 같은 유닉스 도메인 소켓에 연결할 수 있습니다 :
$ socat - UNIX-CONNECT:/tmp/memcached.sock
답변
netcat-openbsd
UNIX 도메인 소켓 연결을 지원합니다. 이를 사용하여 UNIX 도메인 스트림 소켓 또는 UNIX 도메인 데이터 그램 소켓 에 연결할 수 있으므로 소켓 유형을 netcat에 알려야합니다.
예를 들어 /dev/log
Linux의 파일은 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