El directorio en / var / run se elimina después del reinicio completo

19

Mantengo mi sphinx pid en /var/run/sphinx/searchd.pid pero cada vez que reinicio con fuerza el directorio / var / run / sphinx desaparece y la esfinge no se inicia. ¿Hay alguna manera de hacer que ese directorio se pegue o que se cree automáticamente? ¿Cómo suelen manejar las personas esta situación? Yo uso Ubuntu Hardy


fuente
¿Nos puede dar la salida de mount?
Reconbot

Respuestas:

18

Ese directorio es efímero por diseño. Si su contenido se pega a través de las botas, podrían ocurrir todo tipo de efectos desagradables, ya que las secuencias de comandos de control de varios tipos se ven allí para ver qué procesos deberían estar señalando. En un sistema reciente, esta naturaleza temporal se impone mediante el montaje /var/runcomo tmpfs, mientras que los sistemas más antiguos simplemente eliminan todo en el directorio al inicio.

Por lo tanto, debe configurar Sphinx o su script de inicio para crear ese directorio, o simplemente escribir el archivo PID /var/rundirectamente.

Phil Miller
fuente
44
+1 para la descripción de / var / run. Pero tenga en cuenta que no quiere que el archivo PID sea persistente durante un reinicio; solo el directorio sphinx.
Steve Folly
15

Tienes al menos dos posibilidades:

  • cambia tu script de inicio para hacer un mkdir -p /var/run/sphinx/

o

  • establecido pid_file = /var/run/sphinx-searchd.piden/etc/sphinx.conf

Estoy por el segundo.

drAlberT
fuente
2
Y, por supuesto, esto significa que el script de inicio debe ejecutarse como root para poder escribir directamente o crear un directorio en / var / run. Lo cual es molesto ...
Eloff
Elegí la segunda solución también. Parece que hay prioridad para esto (cron, ssh, atd, syslog).
BillMan
2

ahora existe un mecanismo centralizado para la creación de archivos y directorios temporales como estos. Un servicio que desee utilizar este método puede eliminar los comandos mkdir en su propio script de inicio y, en su lugar, colocar un archivo .conf en /etc/tmpfiles.d, /run/tmpfiles.d, o /usr/lib/tmpfiles.d, con Ubuntu servicios que parecen preferir la última opción. para su caso cree un archivo /usr/lib/tmpfiles.d/sphinx.conf.
el contenido del archivo sería:
d /var/run/sphinx 0755 root root

aquí d representa el directorio, al lado está la ruta, el permiso, el propietario y el grupo.
Esto creará el /var/run/sphnixdirectorio al reiniciar.

Verifique la documentación completa tmpfiles.d

Aakash Singhal
fuente