Агент Teamcity Build убит systemd при обновлении

В нашей системе 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 не убивать процесс обновления, сказав, чтобы он не наблюдал за потерянными процессами?

1 ответ

Добавление

RemainAfterExit=yes

к Service Станса, кажется, исправляет это без необходимости изменять таймауты.

Задокументировано по адресу https://www.freedesktop.org/software/systemd/man/systemd.service.html

Прошло много времени с тех пор, как это было впервые опубликовано.

У меня была аналогичная проблема с последней версией TeamCity. В моем случае я настроил systemd для запуска агента от имени специального пользователя. Похоже, у этого пользователя нет необходимых разрешений для выполнения обновления.

Итак, когда агент остановлен, я перезапустил его вручную как root с помощью скриптов TeamCity. Обновление прошло успешно, и новый агент был запущен.

Однако в этот момент агент работал как root. Поэтому я остановил его вручную, сбросил разрешения в каталоге агента сборки для другого моего пользователя (после обновления некоторые файлы принадлежали root) и перезапустил с помощью systemctl. Это перезапустило агент как правильный пользователь.

Кажется, сейчас все работает.

Другие вопросы по тегам