Estoy ejecutando un servidor web Debian Squeeze. Instalé memcached en él y configuré memcached para escuchar en un socket de dominio Unix (at /tmp/memcached.sock
), ya que solo necesita recibir mensajes del sitio web, que vive en el mismo servidor.
Parece estar funcionando bien, pero también me gustaría comunicarme con memcached a través del shell, para verificar que está haciendo lo que creo que está haciendo.
memcached acepta mensajes a través de un protocolo ASCII simple (si lo entiendo correctamente). Si estaba escuchando en TCP / IP, podría enviarle mensajes a través de, por ejemplo nc
:
$ echo "stats settings" | nc localhost 11211
Pero no puedo entender cómo enviar ese texto al socket de dominio en su lugar.
En mi portátil (que se ejecuta OS X Lion), tanto nc
y telnet
tienen opciones ( -U
y -u
respectivamente) para utilizar sockets de dominio. Sin embargo, en mi servidor web Debian Squeeze, estas opciones no están presentes.
/var/run/socket
? ¿Hay alguna manera de reutilizar un archivo existente?-l
), creará el archivo. De lo contrario, espera que el socket ya exista (y ya tenga algo escuchando). Entonces, el comando de ejemplo en la respuesta no crea el archivo.Con
socat
(un 'relé de datos bidireccional entre dos canales de datos') puede conectarse al socket de dominio Unix de esta manera:fuente
netcat-openbsd
admite la conexión a sockets de dominio UNIX. Con esto, puede conectarse a un socket de flujo de dominio UNIX o a un socket de datagrama de dominio UNIX , y por lo tanto, debe indicar el tipo de socket a netcat.por ejemplo, el
/dev/log
archivo en Linux es un socket de socket de datagrama de dominio UNIX , pornc -U /dev/log
lo tanto no funcionará . En lugar de usarnc -uU /dev/log
. Usar -u junto con -U le dice a netcat que es un socket de datagrama de dominio UNIX.Del mismo modo, durante el uso
socat
, use la opción UNIX-CLIENT. El uso de esta opción se puede conectar tanto a la corriente de dominio Unix y de datagramas de dominio UNIX sockets. Desde su página de manual (man socat) , " Primero intenta conectarse y, si eso falla, supone que es un socket de datagrama, por lo tanto, admite ambos tipos ".fuente
Puedes usar socat en Debian. Para instalarlo:
fuente
socat
instalado en mi servidor, pero ciertamente está disponible: packages.debian.org/squeeze/socat