Je cours un server web Debian Squeeze. J'ai installé memcached et j'ai configuré memcached pour écouter sur un socket de domaine Unix (à /tmp/memcached.sock
), car il n'a besoin que de recevoir des messages du site web, qui vit sur le même server.
Il semble fonctionner correctement, mais je voudrais aussi communiquer avec memcached via le shell, pour vérifier qu'il fait ce que je pense qu'il fait.
memcached accepte les messages via un simple protocole ASCII (si je comprends bien). S'il écoutait sur TCP / IP, je pourrais lui envoyer des messages via par exemple nc
:
$ echo "stats settings" | nc localhost 11211
Mais je ne peux pas comprendre comment envoyer ce text à la prise de domaine à la place.
Sur mon ordinateur portable (qui exécute OS X Lion), à la fois nc
et telnet
ont des options ( -U
et -u
respectivement) pour utiliser les sockets du domaine. Cependant, sur mon server web Debian Squeeze, ces options ne sont pas présentes.
Avec netcat-openbsd
, il y a une option -U
. Si vous ne l'avez pas, vous avez probablement installé netcat-traditional
place; Je suggère de changer.
Exemple de command: nc -U /var/run/socket
Avec socat
(un «relais de données bidirectionnel entre deux canaux de données»), vous pouvez vous connecter à la socket du domaine unix comme ceci:
$ socat - UNIX-CONNECT:/tmp/memcached.sock
Vous pouvez utiliser socat sur Debian. Pour l'installer:
# apt-get install socat
netcat-openbsd
prend en charge la connection aux sockets UNIX-domaine. En utilisant ceci, vous pouvez vous connecter à un socket de stream de domaine UNIX ou à un socket de datagramme à domaine UNIX , et vous devez donc indiquer le type de socket à netcat.
Par exemple, le file /dev/log
dans Linux est un socket de socket de datagramme de domaine UNIX , donc nc -U /dev/log
ne fonctionnera pas . Utilisez plutôt nc -uU /dev/log
. L'utilisation de -u avec -U indique à netcat qu'il s'agit d'un socket de datagramme à domaine UNIX.
nc -U /tmp/socket #Connect to UNIX-domain stream socket nc -uU /tmp/socket #Connect to UNIX-domain datagram socket
De même, en utilisant socat
, utilisez l'option UNIX-CLIENT. En utilisant cette option, vous pouvez vous connecter à la fois à un stream de domaine UNIX et à des sockets de datagramme UNIX . De sa page de manuel (man socat) , " Il tente d'abord de se connecter et, en cas d'échec, suppose qu'il s'agit d'un socket datagramme, supportant ainsi les deux types ".
socat - UNIX-CLIENT:/dev/socket #connect to UNIX-domain socket, irrespective of its type