Das Verzeichnis in / var / run wird nach einem Neustart gelöscht

19

Ich behalte meine Sphinx-PID in /var/run/sphinx/searchd.pid, aber bei jedem Neustart verschwindet das Verzeichnis / var / run / sphinx und die Sphinx startet nicht. Gibt es eine Möglichkeit, dieses Verzeichnis festzuhalten oder automatisch erstellen zu lassen? Wie gehen die Leute normalerweise mit dieser Situation um? Ich benutze Ubuntu Hardy


quelle
Können Sie uns den Output von geben mount?
Reconbot

Antworten:

18

Dieses Verzeichnis ist von Natur aus kurzlebig. Wenn der Inhalt über die Stiefel hinweg steckt, können alle möglichen hässlichen Effekte auftreten, da dort Kontrollskripte verschiedener Art nachsehen, welche Prozesse sie signalisieren sollen. Auf neueren Systemen wird diese temporäre Natur durch das Mounten /var/runals erzwungen tmpfs, während ältere Systeme beim Start nur alles im Verzeichnis löschten.

Daher müssen Sie Sphinx oder sein Startskript konfigurieren, um dieses Verzeichnis zu erstellen, oder einfach die PID-Datei /var/rundirekt eingeben .

Phil Miller
quelle
4
+1 für die Beschreibung von / var / run. Beachten Sie jedoch, dass die PID-Datei nach einem Neustart nicht dauerhaft sein soll. Nur das Sphinx-Verzeichnis.
Steve Folly
15

Sie haben mindestens zwei Chancen:

  • Ändern Sie Ihr Init-Skript, um a mkdir -p /var/run/sphinx/

oder

  • setzen pid_file = /var/run/sphinx-searchd.pidin/etc/sphinx.conf

Ich bin für den zweiten.

drAlberT
quelle
2
Und dies bedeutet natürlich, dass das Startskript als root ausgeführt werden muss, um direkt in / var / run schreiben oder ein Verzeichnis erstellen zu können. Was nervt ...
Eloff
Ich habe auch die zweite Lösung gewählt. Es sieht so aus, als hätte dies Vorrang (cron, ssh, atd, syslog).
BillMan
2

Es gibt jetzt einen zentralen Mechanismus für die Erstellung solcher temporären Dateien und Verzeichnisse. Ein Dienst, der diese Methode verwenden möchte, kann mit Ubuntu mkdir-Befehle in seinem eigenen Startskript entfernen und stattdessen eine .conf-Datei in /etc/tmpfiles.d, /run/tmpfiles.d oder /usr/lib/tmpfiles.d ablegen Dienste scheinen die letzte Option zu bevorzugen. Erstellen Sie für Ihren Fall eine Datei /usr/lib/tmpfiles.d/sphinx.conf.
Der Inhalt der Datei wäre:
d /var/run/sphinx 0755 root root

Hier dsteht Verzeichnis, daneben Pfad, Berechtigung, Eigentümer und Gruppe.
Dadurch wird das /var/run/sphnixVerzeichnis beim Neustart erstellt.

Überprüfen Sie die vollständige Dokumentation tmpfiles.d

Aakash Singhal
quelle