Die Speicherung der pid-Datei der daemon läuft als Benutzer
Ist es ein bevorzugter Platz, zum speichern einer pid-Datei für ein daemon, der als Benutzer ausgeführt? /var/run ist der standard, aber das ist für einen Benutzer-daemon, damit es nicht schreiben Berechtigungen. Vermutlich mein daemon gestartet werden .Profil oder .bashrc oder so etwas. Nur speichern in /tmp eine schlechte Idee?
- Speichern in /tmp ist nicht gut, da jeder Namenskonvention würde Sie erfinden (zB
/tmp/<username>/<pid>.pid
) könnte bereits von einer anderen app, und Sie werden nicht in der Lage sein, um die Datei zu erstellen. Anhand einer zufälligen dirname unter/tmp
Ruinen der Idee der pid-Datei - in der Lage sein, um die pid-schnell ohne überprüfung der Prozess-Liste.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn es ausgeführt wird für einen Benutzer, lassen Sie uns sehen, welche Art von Speicher vorhanden ist, die Benutzer-spezifisch sind.
Hmmm.
Das ist es! Das home-Verzeichnis. Ich wusste, es würde zu mir kommen, irgendwann 🙂
Sorry für das Licht jab. Im ernst, ich würde einfach verstauen der PID in
$HOME/.daemon.pid
oder~/.daemon.pid
(wie Sie der name der Datei ist bis zu Ihnen, natürlich).Dies ist, natürlich, vorausgesetzt, Sie werden dann nur noch einen daemon laufen für einen Benutzer. Wenn nicht, werden Sie brauchen, um ein bisschen schwieriger.
Und hoffentlich Befürchtungen, Ihre ängste, dass ein Benutzer versehentlich löschen Sie unbekannte Dateien in Ihrem home-Verzeichnis, das ist, warum Sie es "versteckt", indem Sie Sie starten mit einem
.
Charakter.Meisten nicht-erfahrene Benutzer sollten selbst nie sehen diese und erfahrene user sollten es besser wissen, als muck über mit Ihnen.
.
vor. Benutzer, die nicht wissen, was Sie tun wahrscheinlich nicht einmal wissen, dass es existiert. Und wenn Sie regelmäßig finden Sie die versteckten Dateien, nur einen Fehler löschen.bashrc
wird Ihnen beibringen, den Fehler Ihrer Wege 🙂 Wenn Sie wirklich paranoid, setzen die PID in~/.dont_EVER_delete_me_or_you_WILL_be_sorry/.daemon.pid
./run
(die "neue"/var/run
), aber dieses muss eingerichtet werden, gezielt. Oft finde ich es einfacher zu verwenden~
Unterverzeichnisse seit der Berechtigungen sollte es bereits werden, okay. In jedem Fall, es ist ganz einfach erstellen Sie eine system-boot-Aufgaberm -rf /home/*/run/*
um sicherzustellen, dass alle Benutzer temp-Bereiche leer geräumt sind auf dem boot./tmp
oder~
.Den XDG-Basedir-Spezifikation definiert, wo Sie diese lagern.
Die variable
$XDG_RUNTIME_DIR
definiert die Lage, obwohl es kein Standard.Die häufigsten fallback (wenn die variable nicht gesetzt ist) ist
/tmp/service-$USER.id
.Dies hilft, übersichtliche homedirs, während alle runtime-Daten in
Ich schlage vor, Sie gehen für ein Unterverzeichnis im home-Verzeichnis des Benutzers.
Wenn es andere Benutzer Konfigurationsdaten, die Sie speichern können, dass hier auch, um zu vermeiden, überladen Sie das home-Verzeichnis.