Каталог в / var / run удаляется после полной перезагрузки

19

Я держу свой pid sphinx в /var/run/sphinx/searchd.pid, но каждый раз, когда я сильно перезагружаю каталог, / var / run / sphinx исчезает и sphinx не запускается. Есть ли способ заставить этот каталог придерживаться или он автоматически создается? Как люди обычно справляются с этой ситуацией? Я использую Ubuntu Hardy


источник
Можете ли вы дать нам вывод mount?
переназначить

Ответы:

18

Этот каталог эфемерен по замыслу. Если его содержимое застревает в сапогах, могут возникнуть всевозможные уродливые эффекты, поскольку различные сценарии управления ищут там, чтобы увидеть, о каких процессах они должны сигнализировать. В последних системах этот временный характер обеспечивается подключением /var/runas tmpfs, в то время как старые системы просто удаляют все в каталоге при запуске.

Поэтому вам необходимо настроить Sphinx или его загрузочный скрипт для создания этого каталога или просто записать PID-файл /var/runнапрямую.

Фил Миллер
источник
4
+1 за описание / var / run. Но обратите внимание, что он не хочет, чтобы файл PID был постоянным после перезагрузки; просто каталог сфинксов.
Стив Фолли
15

У вас есть как минимум два шанса:

  • изменить скрипт инициализации, чтобы сделать mkdir -p /var/run/sphinx/

или

  • установить pid_file = /var/run/sphinx-searchd.pidв/etc/sphinx.conf

Я за второй.

drAlberT
источник
2
И, конечно, это означает, что сценарий запуска должен запускаться от имени пользователя root, чтобы иметь возможность писать напрямую или создавать каталог в / var / run. Что раздражает ...
Eloff
Я выбрал и второе решение. Похоже, что для этого есть приоритет (cron, ssh, atd, syslog).
BillMan
2

теперь существует централизованный механизм для создания временных файлов и каталогов, подобных этим. Служба, желающая использовать этот метод, может удалить команды mkdir в своем собственном сценарии запуска и вместо этого поместить файл .conf в /etc/tmpfiles.d, /run/tmpfiles.d или /usr/lib/tmpfiles.d в Ubuntu. сервисы вроде бы предпочли последний вариант. для вашего случая создайте файл /usr/lib/tmpfiles.d/sphinx.conf.
содержимое файла будет:
d /var/run/sphinx 0755 root root

здесь dобозначает каталог, рядом с ним - путь, разрешение, владелец и группа.
Это создаст /var/run/sphnixкаталог при перезагрузке.

Оформить полную документацию tmpfiles.d

Аакаш Сингхал
источник