Linux - locais alternativos onde armazenar arquivos pid em vez de / var / run

21

Conforme escrito no título, onde devo deixar o script init escrever o arquivo pid? existem caminhos padrão que devo escolher em vez do / var / run?

Poderia / tmp ser um bom lugar para armazená-lo ou há desvantagens nisso?

Murko
fonte
6
O que há de errado com / var / run?
arqueado 27/07
Esta questão de estouro de pilha é relevante: stackoverflow.com/q/5173636/1071869
Renan
a única coisa de errado com / var / run é que eu não tenho acesso de escrita com o meu usuário para ele ..
Murko
2
@Murko, então você deve armazenar o arquivo pid no diretório inicial do usuário.
Renan

Respostas:

22

Resumindo : você pode armazená-lo em qualquer lugar (por exemplo, /tmpou /var/tmp), mas /var/runé o padrão preferido.

/var/runé o padrão de hierarquia do sistema de arquivos :

Este diretório contém dados de informações do sistema que descrevem o sistema desde que ele foi inicializado. Os arquivos nesse diretório devem ser limpos (removidos ou truncados, conforme apropriado) no início do processo de inicialização. Os programas podem ter um subdiretório de / var / run; isso é incentivado para programas que usam mais de um arquivo de tempo de execução. [nota de rodapé 37]

E um recurso desejável é que a maioria das distros a limpa automaticamente (ao contrário do /tmpque não é limpo na inicialização em algumas distros) - isso evita arquivos pid obsoletos:

O local normal para pidfiles é / var / run. A maioria dos unices irá limpar este diretório na inicialização; no Ubuntu, isso é alcançado por / var / run um sistema de arquivos em memória (tmpfs).

É sua escolha onde armazená-lo, mas eu aceitaria o padrão.

Se você não tem acesso /var/run, deve armazenar o arquivo pid no diretório inicial do usuário, por exemplo ~/.my_app.pid.

Renan
fonte
9

Se /var/runvocê precisar de acesso de gravação não raiz , observe que existem subdiretórios /var/run/userpara usuários individuais. Você só precisa obter o UID do usuário atual:

/var/run/user/[$uid]

dwk
fonte