2013-04-03 5 views
8

Ich habe ein paar Prozesse, die über Named Pipes miteinander kommunizieren. Derzeit erstelle ich alle meine Pipes lokal und behalte die Anwendungen im selben Arbeitsverzeichnis. An einem bestimmten Punkt wird angenommen, dass diese Programme von verschiedenen Verzeichnissen aus ausgeführt werden können (und werden). Ich muss diese Pipes erstellen, die ich an einem bekannten Ort verwende, damit die verschiedenen Anwendungen die benötigten Pipes finden können.Was ist der richtige Ort, um Named Pipes unter Linux zu platzieren?

Ich bin neu zu arbeiten unter Linux und bin nicht vertraut mit der Dateisystemstruktur. In Windows würde ich etwas wie den AppData-Ordner verwenden, um diese Pipes zu behalten. Ich bin nicht sicher, was das Äquivalent in Linux ist.

Die /tmp Verzeichnis sieht aus wie es wahrscheinlich nur gut funktionieren könnte. Ich habe an einigen Stellen gelesen, dass es beim Herunterfahren des Systems gelöscht wird (und das ist in Ordnung, ich habe wahrscheinlich die Pipes nicht neu erstellt, wenn ich wieder starte.), Aber ich habe ein paar andere Leute gesehen, die sagen, dass sie Dateien verlieren während das System läuft, als ob es regelmäßig gereinigt wird, was ich nicht möchte, während meine Anwendungen diese Rohre benutzen!

Gibt es einen Ort, der für anwendungsspezifische Geschäfte besser geeignet ist? Oder wäre /tmp der Ort, an dem ich diese behalten möchte (da sie doch nur vorübergehend sind)?

Antwort

7

Ich habe SaltStack mit /var/run gesehen. Das einzige Problem ist, dass Sie Root-Zugriff benötigen, um in dieses Verzeichnis zu schreiben, aber sagen wir, dass Sie Ihren Prozess als System-Daemon ausführen werden. SaltStack erstellt zum Zeitpunkt der Installation /var/run/salt und ändert den Besitzer in salt, so dass es später ohne Root-Rechte verwendet werden kann.

Ich habe auch das Filesystem Hierarchy Standard und obwohl es so viel nicht wirklich wichtig ist, auch sagen, dass sie:

Systemprogramme, die vorübergehenden UNIX-Domain-Sockets pflegen müssen sie in diesem Verzeichnis abgelegt werden.

Da Named Pipes etwas sehr ähnliches sind, würde ich den gleichen Weg gehen.

+0

Ich entschuldige mich dafür, Ihre Antwort nicht früher zu sehen, aber das ist genau die Art von Antwort, die ich suchte. Ich war mir des 'Dateisystem-Hierarchie-Standards' (http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard#Directory_structure) nicht bewusst, und anscheinend hat das alle möglichen Informations-Leckerbissen für einen noch jungen Linux-Entwickler wie mich. Zusätzlich zu '/ var/run' scheint'/var/tmp' auch für meinen Anwendungsfall akzeptabel zu sein, da es diese auch durch Neustarts erhält. Nochmals, vielen Dank! – nitz

+0

Froh, dass ich geholfen habe ;-) – tchap

3

Auf neuere Linux-Distributionen mit systemd /run/user/<userid> (von pam_systemd bei der Anmeldung erstellt, wenn es nicht bereits vorhanden ist) kann für die Öffnung Steckdosen und setzen .pid Dateien dort statt /var/run verwendet werden, wo nur root Zugriff hat. Beachten Sie auch, dass /var/run ein Symlink zu /run ist, so dass auch /var/run/user/<userid> verwendet werden kann. Weitere Informationen finden Sie unter this thread. Die Idee dahinter ist, dass Systemdämonen ein /var/run/<daemon name>/ Verzeichnis haben sollten, das während der Installation mit den entsprechenden Rechten erstellt wurde und ihre Sockets/PID-Dateien dort einspeichern, während vom Benutzer ausgeführte Dämonen (wie zum Beispiel pulseaudio) /run/user/<userid>/ verwenden sollten. Eine andere Option ist /tmp und /var/tmp.