Atualizar o tempo usando o chrony do script systemd (alguma reinicialização do aplicativo)?

Atualizar o tempo usando o chrony do script systemd (alguma reinicialização do aplicativo)?

se meu hoster mover minha VM para outro host, a hora local será alterada (até 3 segundos). Chrony é capaz de consertar isso, mas leva muito tempo até perceber. Durante esse período, meu nó de banco de dados (CockroachDB) é desligado devido à diferença de horário (máximo de 0,5 segundos permitido). Então, meu script systemd o reinicia.

Agora quero que o script systemd primeiro atualize a hora com certeza. Então eu adicionei isso ao meu /etc/systemd/system/cockroach.serviceroteiro:

ExecStartPre=-/usr/bin/chronyc -a makestep

Mas isso me dá o erro 501 (ausência de autorização) porque meu script systemd é executado como usuário "barata" e o daemon chrony só aceita mensagens de usuários root ou chrony (UDP).

Agora estou preso. Existe uma maneira de permitir que o chrony receba mensagens do usuário barata também? Ou qualquer outra opção para sincronizar a hora agora (o chrony está em execução, portanto, nenhuma atualização manual é possível).

Responder1

A solução é a sintaxe "+" para oExecStartPreparâmetro. O seguinte executa ocrônicoexecutável com permissões de root (+) e ignora quaisquer erros que possam ocorrer para esta chamada (-):

ExecStartPre=-+/usr/bin/chronyc -a makestep

Isso funcionou bem pra mim.

Você pode encontrar a documentação para esses prefixos na documentação do systemd para oExecStartparâmetro aqui:https://www.freedesktop.org/software/systemd/man/systemd.service.html#ExecStart=

informação relacionada