Linux - Alternative Speicherorte für PID-Dateien anstelle von / var / run

21

Wie im Titel geschrieben, wo soll ich das Init-Skript die PID-Datei schreiben lassen? Gibt es Standardpfade, die ich anstelle von / var / run wählen sollte?

Könnte / tmp ein guter Ort sein, an dem es aufbewahrt werden kann, oder weist dies Nachteile auf?

Murko
quelle
6
Was ist los mit / var / run?
27.
Diese Frage zum Stapelüberlauf
Renan
Das einzig falsche an / var / run ist, dass ich mit meinem Benutzer keinen Schreibzugriff darauf habe.
Murko
2
@Murko dann sollten Sie die PID-Datei im Home-Verzeichnis des Benutzers speichern.
Renan

Antworten:

22

Kurz gesagt : Sie können es überall aufbewahren (sagen wir /tmpoder /var/tmp), aber dies /var/runist der bevorzugte Standard.

/var/runist der Dateisystem-Hierarchiestandard :

Dieses Verzeichnis enthält Systeminformationsdaten, die das System seit dem Start beschreiben. Dateien in diesem Verzeichnis müssen zu Beginn des Startvorgangs gelöscht (entfernt oder entsprechend gekürzt) werden. Programme können ein Unterverzeichnis von / var / run haben; Dies wird für Programme empfohlen, die mehr als eine Laufzeitdatei verwenden. [Fußnote 37]

Und eine wünschenswerte Funktion ist, dass die meisten Distributionen diese automatisch bereinigen (im Gegensatz zu /tmpeinigen Distributionen, die beim Booten nicht bereinigt werden) - dies vermeidet veraltete PID-Dateien:

Der normale Speicherort für PID-Dateien ist / var / run. Die meisten Unices bereinigen dieses Verzeichnis beim Booten. Unter Ubuntu wird dies erreicht, indem / var / ein In-Memory-Dateisystem (tmpfs) ausführt.

Sie haben die Wahl, wo Sie es aufbewahren möchten, aber ich würde dem Standard folgen.

Wenn Sie keinen Zugriff auf haben /var/run, sollten Sie die PID-Datei im Home-Verzeichnis des Benutzers speichern, z ~/.my_app.pid.

Renan
quelle
9

Wenn Sie keinen Root-Schreibzugriff /var/runbenötigen, beachten Sie, dass /var/run/userfür einzelne Benutzer Unterverzeichnisse vorhanden sind . Sie müssen nur die UID des aktuellen Benutzers abrufen:

/var/run/user/[$uid]

dwk
quelle