elasticsearch systemstart /var/run/

stefkey

Member
Hallo,

elasticsearch startet nach Reboot meines Ubuntu 16.04 nicht. Das Problem ist das die elasticsearch.pid nicht in /var/run/ geschrieben werden kann. Ich habe im Netz gefunden das der elasticsearch-user nicht in /var/run schreiben darf. Man soll ein Verzeichnis in /var/run mit den Rechten elasticsearch:elasticsearch anlegen. Das habe ich gemacht und elasticsearch lässt sich dann auch starten. Allerdings ist das Verzeichnis nach einem Reboot wieder gelöscht. :(

Wie kann ich in /var/run ein Verzeichnis anlegen das auch nach Reboot bleibt?
 
Unter Debian ist liegt /run im RAM (tmpfs) und /var/run ist nur ein Symlink darauf - das dürfte bei Ubuntu ähnlich sein. Entsprechend ist das Verzeichnis nach einem Reboot leer.
Es sollte aber funktionieren, wenn du das Verzeichnis mit entsprechenden Rechten in deinem init-Script anlegst, sofern es noch nicht funktioniert.
 
Hi danton, danke sehr für den Tip. Im init-Script steht u.a. das folgende:
Code:
# Define other required variables
PID_FILE=/var/run/elasticsearch/$NAME.pid
DAEMON=$ES_HOME/bin/elasticsearch
DAEMON_OPTS="-d -p $PID_FILE -Des.default.config=$CONF_FILE -Des.default.path.home=$ES_HOME -Des.default.path.logs=$LOG_DIR -Des.default.path.data=$DATA_DIR -Des.default.path.wo$

Ist es sauber wenn ich da einfach ein `mkdir /var/run/elasticsearch` davor setze?
 
Das kommt ein wenig drauf an. Wenn du elasticsearch (oder auch ein anderes Programm) über ein Paket installiert hast, sollte der Maintainer solche Besonderheiten eigentlich direkt im init-Script berücksichtigen.
Änderungen kannst du prinzipiell vornehmen, allerdings kann es bei einem Update passieren, dass diese dabei verloren gehen, weil das Init-Script überschrieben wird. Daher ist es u.U. sinnvoll, einen Bugreport zu verfassen.
Wenn du die Software auf anderem Weg (z.B. selbst kompiliert) installiert hast, mußt du natürlich selber dafür sorgen, dass das init-Script alle notwendigen Vorbereitungen trifft.
Vor dem mkdir solltest du natürlich prüfen, ob das Verzeichnis nicht bereits existiert. Außerdem nicht vergessen, den Owner korrekt setzen.
 
ich habe elasticsearch mit folgendem Befehl installiert. `dpkg -i elasticsearch-1.7.3.deb`
Das heißt nicht durch den Paketmanager, richtig? Das init-Script war aber unter /etc/init.d dadurch mitinstalliert. Dort war als Pfad aber ursprünglich anders, nämlich /var/run/elasticsearch.pid. Das ging aber auch nicht und ich hatte irgendwo gelesen das ich eben ein Unterverzeichnis anlegen soll mit den richtigen Rechten (elasticsearch:elasticsearch). Aber das verschwindet eben beim Neustart.
 
dpkg ist schon der Paket-Manager, aber da du diesen Weg gewählt hast, stammt das Paket vermutlich nicht aus den offiziellen Ubuntu-Repositories. Daher kann es sehr gut sein, dass es nicht alle Besonderheiten deines Systems berücksichtigt.
Also init-Script anpassen und im Hinterkopf behalten, dass du diese Anpassung evtl. bei einem Update wieder vornehmen mußt.
 
Back
Top