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.
Ich bin neu in 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.
Das /tmp
-Verzeichnis sieht so aus, als könnte es wahrscheinlich nur gut funktionieren. 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 temporär sind.)?
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 /var/run/salt
zur Installationszeit und ändert den Besitzer in salt
, so dass es später ohne Root-Rechte verwendet werden kann.
Ich habe auch den Dateisystem-Hierarchie-Standard überprüft und obwohl es nicht so wichtig ist, sagen sie sogar:
Systemprogramme, die vorübergehende UNIX-Domänen-Sockets verwalten, müssen sie in diesem Verzeichnis ablegen.
Da Named Pipes etwas sehr ähnliches sind, würde ich den gleichen Weg gehen.
Auf neueren Linux-Distributionen mit systemd /run/user/<userid>
(erstellt von pam_systemd bei der Anmeldung, wenn dies der Fall ist) existiert noch nicht) kann zum Öffnen von Sockets und zum Setzen von .pid-Dateien verwendet werden anstatt von /var/run
, 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 findest du in diesem Thread . Die Idee dahinter ist, dass Systemdämonen ein /var/run/<daemon name>/
-Verzeichnis haben sollten, das während der Installation mit den entsprechenden Berechtigungen erstellt wurde, und ihre Sockets / PID-Dateien dort ablegen, während vom Benutzer verwendete Dämonen (wie pulseaudio) /run/user/<userid>/
verwenden sollten. Eine weitere Option ist /tmp
und /var/tmp
.
Tags und Links named-pipes linux pipe filesystems tmp