Katalog w katalogu / var / run zostanie usunięty po ponownym uruchomieniu komputera

19

Trzymam mój sfinks pid w katalogu /var/run/sphinx/searchd.pid, ale za każdym razem, gdy ponownie uruchamiam komputer, katalog / var / run / sphinx znika i sfinks nie uruchamia się. Czy istnieje sposób, aby ten katalog był przyklejony lub automatycznie utworzony? Jak ludzie zazwyczaj radzą sobie z tą sytuacją? Używam Ubuntu Hardy


źródło
Czy możesz podać nam wynik mount?
recbot

Odpowiedzi:

18

Ten katalog jest efemeryczny z założenia. Jeśli jego zawartość zakleszczy się na obuwie, mogą pojawić się różnego rodzaju brzydkie efekty, ponieważ różne skrypty sterujące sprawdzą, czy proces powinien być sygnalizowany. W najnowszym systemie ta tymczasowa natura jest wymuszona przez montowanie /var/runjako tmpfs, podczas gdy starsze systemy po prostu usunęły wszystko w katalogu przy uruchomieniu.

Dlatego musisz skonfigurować Sphinx lub jego skrypt startowy, aby utworzyć ten katalog lub po prostu bezpośrednio zapisać plik PID /var/run.

Phil Miller
źródło
4
+1 za opis / var / run. Należy jednak pamiętać, że nie chce, aby plik PID był trwały podczas ponownego uruchamiania; tylko katalog sfinksa.
Steve Folly
15

Masz przynajmniej dwie szanse:

  • zmień skrypt init, aby wykonać mkdir -p /var/run/sphinx/

lub

  • ustawiony pid_file = /var/run/sphinx-searchd.pidw/etc/sphinx.conf

Jestem za drugim.

drAlberT
źródło
2
I oczywiście oznacza to, że skrypt startowy musi działać jako root, aby móc pisać bezpośrednio lub tworzyć katalog w / var / run. Co jest denerwujące ...
Eloff,
Wybrałem również drugie rozwiązanie. Wygląda na to, że ma to pierwszeństwo (cron, ssh, atd, syslog).
BillMan
2

istnieje teraz scentralizowany mechanizm tworzenia tymczasowych plików i katalogów takich jak te. Usługa pragnąca skorzystać z tej metody może usunąć polecenia mkdir we własnym skrypcie startowym i zamiast tego umieścić plik .conf w /etc/tmpfiles.d, /run/tmpfiles.d lub /usr/lib/tmpfiles.d w systemie Ubuntu usługi wydają się preferować ostatnią opcję. dla swojej sprawy utwórz plik /usr/lib/tmpfiles.d/sphinx.conf.
zawartość pliku będzie:
d /var/run/sphinx 0755 root root

tutaj doznacza katalog, obok niego jest ścieżka, pozwolenie, właściciel i grupa.
Spowoduje to utworzenie /var/run/sphnixkatalogu przy ponownym uruchomieniu.

Zapoznaj się z pełną dokumentacją tmpfiles.d

Aakash Singhal
źródło