Eu tenho um serviço systemd que exibe o seguinte erroservice start request repeated too quickly, refusing to start
Entendo que o serviço está configurado para reiniciar em caso de falha e está reiniciando repetidamente. Mas quando exatamente ele se recusa a reiniciar? Existe um limite ou número que o define?
Além disso, o que too quickly
significa exatamente, é um limite de número de reinicializações em um determinado período de tempo?
O limite padrão é permitir 5 reinicializações em um período de 10 segundos. Se um serviço ultrapassar esse limite devido à
Restart=
opção de configuração na definição de serviço, ele não tentará reiniciar mais.As taxas são configuradas com as opções e e a
StartLimitIntervalSec=
opção controla quando o SystemD tenta reiniciar um serviço.StartLimitBurst=
Restart=
Mais informações em
man systemd.unit
eman systemd.service
.Em seguida, use
systemctl daemon-reload
para recarregar a configuração da unidade.Não é exatamente a mesma pergunta, mas como essa é a que aparece na pesquisa ...
Se você quiser apenas iniciá-lo ignorando esse absurdo absurdo de limite (por exemplo, no Debian, onde é o resultado inevitável de serviços de inicialização automática do apt antes de serem configurados, condenando-os a falhar e fazer um loop e atingir o limite, enviando spam ao log com tanta força com o início erros de limite que você nem consegue ler facilmente a causa):
Veja https://bugzilla.redhat.com/show_bug.cgi?id=1016548 onde Michal Schmidt diz que você pode encontrá-lo
man systemd.service
e sugere redefinir o status de falha:Então agora seu serviço pode começar. Ou pelo menos a causa atual do motivo pelo qual não deve estar no log, por exemplo. visto com
journalctl -x
Vale a pena notar que algumas falhas parecem lançar esse erro, enquanto a causa é diferente.
Eu comentei o bantime padrão e inseri um inline alternativo
**bantime = 7200 #3600**
Também adicionei uma nova seção [sasl] , que incluía um nome de filtro que havia sido alterado em relação ao fornecido no artigo que estava seguindo.
Em vez de errar em qualquer um deles, o fail2ban se recusou a reiniciar, dando a
Somente quando comentei a seção [sasl], recebi um erro que se referia a um bantime inválido, do qual concluí que não pode lidar com comentários inline.
Quando consertei isso e descomentei a nova seção [sasl], recebi um erro de que o filtro não foi encontrado. A substituição do filtro nomeado corretamente resultou no recarregamento do fail2ban conforme o esperado.
Portanto, se você fizer alterações e receber esse erro, certifique-se de remover as alterações e ainda obter o mesmo erro antes de tentar corrigir um sintoma.
Você não especifica qual serviço falha ao iniciar com esse erro.
Eu tive esse problema com
fail2ban
, e como na resposta de MickG , o erro estava na minha configuração fail2ban, e não tinha nada a ver com a configuração do serviço systemd.Com fail2ban, a solução é iniciá-lo com
que exibirá uma mensagem de erro detalhada. Por algum motivo, ao usar
systemctl start fail2ban
o erro real se perde e não pode ser encontrado em nenhum log.Uma vez corrigido o erro de configuração, o serviço pode ser novamente interrompido ou (re)iniciado com o systemd.
No meu caso, a mensagem de erro foi um pouco enganosa. O motivo da falha resultou de uma cópia entre máquinas. A linha
no meu arquivo de configuração de serviço
/etc/systemd/system/infinite_script.service
foi o culpado.A nova máquina não conhecia este usuário. Mudando para
User=root
resolver este problema.Uma maneira rápida e suja que acabei de usar para esse mesmo problema é que criei um script de wrapper bash que dorme para que o serviço não seja iniciado tão rápido. Funciona para mim, pois não preciso das reinicializações imediatas.
/root/sleep_and_start_autossh.sh
/etc/systemd/system/autossh.service