В нашей системе centos мы настроили агент teamcity как службу systemd. Служба работает нормально, кроме случаев, когда агент выполняет обновление. Затем он убивается при выполнении обновления. Я предполагаю, что это связано с тем, что systemd наблюдает за созданными процессами, и когда существует основной процесс, позволяющий второму процессу выполнить обновление, systemd решает, что это потерянный процесс, и завершает его примерно через минуту.
Я полагаю, это предположение подтверждается тем фактом, что когда я напрямую запускаю агент teamcity, обновление работает без проблем.
Это конфигурация сервиса:
[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
До сих пор я пытался изменить тайм-аут на 900 секунд и закомментировал PIDFile. Ничего не помогло.
Есть ли способ сказать systemd не прекращать процесс обновления, запретив следить за потерянными процессами?
Добавление
RemainAfterExit=yes
к Service
строфа, кажется, исправляет это без необходимости изменять тайм-ауты.
Документировано на https://www.freedesktop.org/software/systemd/man/systemd.service.html#RemainAfterExit=