Monitorar o arquivo com o serviço Systemd

3

Eu tenho um arquivo que é periodicamente gravado por um serviço em execução em um servidor Ubuntu. Eu tenho outro serviço atualmente em execução em um temporizador que verifica o arquivo escrito para alterações de estados anteriores e atualiza uma tabela de banco de dados mysql se forem feitas alterações. Eu gostaria de configurar algum tipo de serviço que possa dizer imediatamente quando uma alteração no arquivo é feita, em vez de esperar que um timer seja disparado, mas eu não vi como definir um watch de arquivo usando o systemd.

    
por Alex 11.09.2017 / 15:45

1 resposta

3

O mecanismo systemd para isso é uma unidade de caminho , na qual você nomeia o arquivo a ser assistido em uma configuração PathChanged ou PathModified , dependendo de como o gravador está gravando na arquivo.

Se estiver gravando o arquivo inteiro e fechando-o toda vez, então PathChanged evita uma armadilha de PathModified , que é suscetível a ativação prematura se a modificação como um todo envolver múltiplas gravações escrevendo apenas uma parte do arquivo . Mas, por outro lado, PathChanged é suscetível de ser acionado mesmo que o arquivo tenha sido aberto apenas para escrita por um escritor, mas nunca gravado na realidade.

Você nomeia a unidade de caminho da mesma forma que uma unidade de serviço associada ou usa a configuração Unit . Esta unidade de serviço associada será, evidentemente, o seu serviço que transfere o conteúdo do arquivo para a base de dados, sem o temporizador supérfluo. Quando a alteração relevante no arquivo acontece, a unidade de caminho faz com que a unidade de serviço seja ativada (se já não estiver). Isso é chamado de ativação de caminho .

Leitura adicional

  • Lennart Poettering e cols. (2017). systemd.unit . páginas de manual do systemd. freedesktop.org.
  • Lennart Poettering e cols. (2017). systemd.path . páginas de manual do systemd. freedesktop.org.
por 11.09.2017 / 16:50