Adicionando
RemainAfterExit=yes
para a estrofe Service
parece corrigir isso sem precisar alterar os tempos limite.
Documentado no link
Em nosso sistema centos, configuramos um agente teamcity como um serviço systemd. O serviço funciona bem, exceto quando o agente executa uma atualização. Em seguida, ele é morto durante a execução da atualização. Eu acho que isso é devido ao fato de que o systemd observa os processos criados e quando o processo principal existe para permitir que um segundo processo realize um upgrade systemd decide que este é um processo perdido e mata após cerca de um minuto.
Eu acho que essa suposição é validada pelo fato de que, quando eu inicio diretamente o agente teamcity, a atualização funciona sem nenhum problema.
Esta é a configuração do serviço:
[Unit]
Description=teamcity agent - local
Requires=network.target
After=network.target
[Service]
Type=forking
PIDFile=/home/teamcityagent/logs/buildAgent.pid
WorkingDirectory=/home/teamcityagent
User=teamcityagent
Group=teamcityagent
ExecStart=/home/teamcityagent/bin/agent.sh start
ExecStop=/home/teamcityagent/bin/agent.sh stop
TimeoutStartSec=900
TimeoutStopSec=60
[Install]
WantedBy=multi-user.target
Até agora eu tentei mudar o timeout para 900secs e comentei o PIDFile. Nada ajudou.
Existe uma maneira de dizer ao systemd para não matar o processo de atualização dizendo-lhe para não procurar por processos perdidos?
Adicionando
RemainAfterExit=yes
para a estrofe Service
parece corrigir isso sem precisar alterar os tempos limite.
Documentado no link