Назад | Перейти на главную страницу

S6 - служба медленного запуска некорректно запускается второй раз

Пользуюсь s6 (http://skarnet.org/software/s6/) для наблюдения за процессами.

У меня это хорошо работает для сотен процессов на десятках экземпляров докеров и серверов. У меня возникла новая проблема в стабильной системе.

Я настроил службу для ClamAV и в /etc/services.d/clamv/run начал процесс с:

exec s6-setuidgid clamav /opt/clamd

Он запускается, но у clam длинный цикл запуска, и примерно через одну минуту 20 секунд (предположительно, когда он завершает загрузку базы данных) запускается S6. другой экземпляр моллюска. Я могу увидеть их с помощью ps:

2286 clamav     0:00 /opt/clamd 
5091 clamav     0:58 /opt/clamd 

После завершения загрузки второй экземпляр пытается использовать сокет и вызывает ошибку:

Socket file /run/clamav/clamd.sock is in use by another process

Интересно, что при использовании ps aux столбец ВРЕМЯ для первого процесса увеличивается до 1:18, а затем возвращается к нулю - и второй экземпляр затем подсчитывает таким же образом.

Если я оставлю его запущенным, когда второй процесс завершит запуск, s6 будет пытаться запустить другой - хотя, что любопытно, никаких дополнительных процессов с использованием ps aux не появляется.

Я подтвердил, что clam создает файлы sock и pid только после долгого запуска.

Очевидный вопрос - как это исправить, чтобы s6 не запускал второй экземпляр в конце долгого запуска.

Ответ не имеет отношения к s6 - у меня был файл clamd.conf не в том месте, поэтому он собирал неправильные настройки. По умолчанию clamd запускается в фоновом режиме, поэтому s6 не смог контролировать процесс.

При запуске моллюска на переднем плане все работало как надо.