6

On our centos system we have configured a teamcity agent as a systemd service. The service works fine except when the agent performs an upgrade. Then it gets killed while performing the upgrade. I guess this is due to the fact, that systemd watches the created processes and when the main process exists to let a second process perform an upgrade systemd decides this is a lost process and kills it after about a minute.

I guess this assumption gets validated by the fact that when i directly start the teamcity agent the upgrade works without a problem.

This is the configuration of the service:

[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

So far I have tried to change the timeout to 900secs and commented out the PIDFile. Nothing helped.

Is there a way to tell systemd to not kill the upgrade process by telling it not to watch for lost processes?

4

Adding

RemainAfterExit=yes

to the Service stanza appears to fix this without needing to change timeouts.

Documented at https://www.freedesktop.org/software/systemd/man/systemd.service.html#RemainAfterExit=

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.