O que são arquivos pid e lock?

64

Muitas vezes vejo programas especificando arquivos pid e lock. E não tenho certeza do que eles fazem.

Por exemplo, ao compilar o nginx:

--pid-path=/var/run/nginx.pid \
--lock-path=/var/lock/nginx.lock \

Alguém pode lançar alguma luz sobre isso?

    
por Stann 07.05.2011 / 22:19

3 respostas

75

arquivos pid são escritos por alguns programas para gravar seu ID de processo enquanto estão iniciando. Isso tem várias finalidades:

  • É um sinal para outros processos e usuários do sistema que esse programa específico está executando ou, pelo menos, foi iniciado com êxito.
  • Permite escrever um script muito fácil de verificar se está em execução e emitir um comando kill simples, se alguém quiser terminá-lo.
  • É uma maneira barata de um programa ver se uma instância anterior em execução não foi concluída com êxito.

A simples presença de um arquivo pid não garante que esse ID de processo específico esteja em execução, é claro, portanto, esse método não é 100% infalível, mas "bom o suficiente" em muitos casos. Verificar se um determinado PID existe na tabela de processos não é totalmente portátil em sistemas operacionais semelhantes a UNIX, a menos que você queira depender do utilitário ps , que pode não ser desejável para chamar em todas as instâncias (e acredito que alguns UNIX- como sistemas operacionais implementam ps de maneira diferente).

Os arquivos de bloqueio são usados pelos programas para garantir que duas instâncias separadas (bem-comportadas) de um programa, que podem estar sendo executadas simultaneamente em um sistema, não acessem outra coisa ao mesmo tempo. A ideia é antes que o programa acesse seu recurso, ele verifique a presença de um arquivo de bloqueio e, se o arquivo de bloqueio existir, ou cometer erros ou esperar que ele desapareça. Quando ele não existe, o programa que deseja "adquirir" o recurso cria o arquivo e, em seguida, outras instâncias que podem ser encontradas posteriormente aguardarão a conclusão desse processo. Naturalmente, isso pressupõe que o programa "adquirir" o bloqueio libera-o e não esquece de excluir o arquivo de bloqueio.

Isso funciona porque o sistema de arquivos sob todos os sistemas operacionais semelhantes ao UNIX impõe serialização , o que significa que apenas uma mudança no sistema de arquivos realmente acontece a qualquer momento. Mais ou menos como bloqueios com bancos de dados e tal.

    
por 07.05.2011 / 22:50
13

Esses arquivos são freqüentemente usados por daemons que devem ser executados apenas uma vez em um sistema. O arquivo PID geralmente contém o número de identificação do processo do programa já iniciado e em execução, se houver um. Além disso, quando é iniciado, cria o arquivo de bloqueio. Enquanto o arquivo de bloqueio existir, ele não iniciará outro sem a intervenção do usuário. Se o arquivo de bloqueio existir e o ID do processo mencionado no arquivo pid não estiver em execução, o daemon será considerado em estado "morto", o que significa que ele deve estar em execução, mas provavelmente não é devido a um travamento ou desligamento incorreto . Isso pode iniciar um cenário especial de inicialização / reinicialização para alguns programas. Desligá-lo corretamente removerá o arquivo de bloqueio.

    
por 07.05.2011 / 22:46
7

Um arquivo PID conterá o ID do processo de um processo em execução. Isso tem vários usos; você pode lê-lo e verificar se o processo ainda está em execução e tomar a ação apropriada ou ler e matar o processo.

Um arquivo de bloqueio é mais provável específico do aplicativo. Os arquivos de bloqueio são usados para indicar que algum recurso está em uso e que o processo que deseja acesso deve aguardar até que o recurso seja liberado antes de continuar.

    
por 07.05.2011 / 22:47

Tags