O diretório em / var / run é excluído após a reinicialização forçada

19

Eu mantenho meu sphinx pid em /var/run/sphinx/searchd.pid, mas toda vez que reinicializo com força o diretório / var / run / sphinx desaparece e o sphinx falha ao iniciar. Existe uma maneira de fazer com que esse diretório permaneça ou seja criado automaticamente? Como as pessoas geralmente lidam com essa situação? Eu uso o Ubuntu Hardy


fonte
Você pode nos dar a saída de mount?
reconbotou 15/10/09

Respostas:

18

Esse diretório é efêmero por design. Se seu conteúdo travar nas botas, todos os tipos de efeitos feios podem ocorrer, pois os scripts de controle de vários tipos procuram lá para ver quais processos eles devem estar sinalizando. No sistema recente, essa natureza temporária é imposta pela montagem /var/runcomo tmpfs, enquanto os sistemas mais antigos apenas excluíam tudo no diretório na inicialização.

Portanto, você precisa configurar o Sphinx ou seu script de inicialização para criar esse diretório ou simplesmente gravar o arquivo PID /var/rundiretamente.

Phil Miller
fonte
4
+1 para a descrição de / var / run. Mas observe que ele não deseja que o arquivo PID seja persistente durante uma reinicialização; apenas o diretório sphinx.
10119 Steve Folly
15

Você tem pelo menos duas chances:

  • mude seu script init para fazer uma mkdir -p /var/run/sphinx/

ou

  • definir pid_file = /var/run/sphinx-searchd.pidem/etc/sphinx.conf

Eu sou o segundo.

drAlberT
fonte
2
E é claro que isso significa que o script de inicialização deve ser executado como root para poder gravar diretamente ou criar um diretório em / var / run. Que é irritante ...
Eloff
Eu escolhi a segunda solução também. Parece que há precedência para isso (cron, ssh, atd, syslog).
Billman
2

agora existe um mecanismo centralizado para a criação de arquivos e diretórios temporários como esses. Um serviço que deseja usar esse método pode remover os comandos mkdir em seu próprio script de inicialização e, em vez disso, colocar um arquivo .conf em /etc/tmpfiles.d, /run/tmpfiles.d ou /usr/lib/tmpfiles.d, com o Ubuntu serviços que parecem preferir a última opção. para o seu caso, crie um arquivo /usr/lib/tmpfiles.d/sphinx.conf.
o conteúdo do arquivo seria:
d /var/run/sphinx 0755 root root

aqui dsignifica diretório, ao lado dele estão o caminho, a permissão, o proprietário e o grupo.
Isso criará o /var/run/sphnixdiretório na reinicialização.

Confira a documentação completa tmpfiles.d

Aakash Singhal
fonte