Ich betreibe einen Debian Squeeze-Webserver. Ich habe memcached darauf installiert und memcached so konfiguriert, dass es auf einem Unix-Domain-Socket (at /tmp/memcached.sock
) lauscht , da es nur Nachrichten von der Website empfangen muss, die sich auf demselben Server befindet.
Es scheint gut zu funktionieren, aber ich möchte auch über die Shell mit memcached kommunizieren, um zu überprüfen, ob es das tut, was ich denke.
memcached akzeptiert Nachrichten über ein einfaches ASCII-Protokoll (wenn ich das richtig verstehe). Wenn es TCP / IP abhört, kann ich ihm Nachrichten senden über zB nc
:
$ echo "stats settings" | nc localhost 11211
Aber ich kann nicht herausfinden, wie ich diesen Text stattdessen an den Domain-Socket senden soll.
Auf meinem Laptop (die OS X Lion läuft), die beide nc
und telnet
haben Optionen ( -U
und -u
jeweils) Domain - Sockets zu verwenden. Auf meinem Debian Squeeze-Webserver sind diese Optionen jedoch nicht vorhanden.
/var/run/socket
? Gibt es eine Möglichkeit, eine vorhandene Datei wiederzuverwenden?-l
), wird die Datei erstellt. Andernfalls wird davon ausgegangen, dass der Socket bereits vorhanden ist (und bereits etwas zum Abhören vorhanden ist). Der Beispielbefehl in der Antwort erstellt die Datei also nicht.Mit
socat
(einem 'bidirektionalen Daten-Relay zwischen zwei Datenkanälen') können Sie sich wie folgt mit dem Unix-Domain-Socket verbinden:quelle
netcat-openbsd
unterstützt das Verbinden mit UNIX-Domain-Sockets. Mit dieser Option können Sie eine Verbindung zu einem UNIX-Domain-Stream-Socket oder einem UNIX-Domain-Datagramm-Socket herstellen . Daher müssen Sie den Socket-Typ Netcat mitteilen.zum Beispiel
/dev/log
Datei in Linux ist eine Datagramm - Socket UNIX-Domain - Buchse, sonc -U /dev/log
wird nicht funktionieren . Verwenden Sie stattdessennc -uU /dev/log
. Wenn Sie -u zusammen mit -U verwenden, wird netcat mitgeteilt, dass es sich um einen UNIX-Domain-Datagramm-Socket handelt.Verwenden Sie während der Verwendung
socat
die Option UNIX-CLIENT. Mit dieser Option können Sie eine Verbindung zu UNIX-Domain-Stream- und UNIX-Domain-Datagram- Sockets herstellen. Auf der Manpage (man socat) wird " zuerst versucht, eine Verbindung herzustellen , und wenn dies fehlschlägt, wird davon ausgegangen , dass es sich um einen Datagramm-Socket handelt, der beide Typen unterstützt ".quelle
Sie können socat unter Debian verwenden. So installieren Sie es:
quelle
socat
auf meinem Server installiert zu haben , aber es ist auf jeden Fall verfügbar: packages.debian.org/squeeze/socat