CollectMode=
[Unit]
CollectMode=inactive-or-failed: уборка временных unit
Разрешает systemd выгружать сведения о unit после его завершения. По умолчанию упавшие unit остаются в памяти до сброса состояния.
Что делает
Это важно там, где unit создаются массово: экземпляры шаблонов при сокет-активации «по соединению», временные unit из systemd-run. Без уборки сведения о каждом завершённом экземпляре накапливаются и расходуют память менеджера.
Где ставится. В секции [Unit].
Значения
| Значение | Что происходит |
|---|---|
inactive | по умолчанию: выгружать только успешно завершённые. |
inactive-or-failed | выгружать и упавшие тоже. |
По умолчанию: inactive
Пример
Шаблон обработчика соединений с уборкой.
[Unit]
Description=Обработчик соединения %i
CollectMode=inactive-or-failed
[Service]
ExecStart=/usr/local/bin/handler
StandardInput=socket
Без уборки после тысяч соединений список unit разрастается, и вывод systemctl становится нечитаемым.
Типичные ошибки
С уборкой упавших unit их состояние исчезает: сбой не попадёт в systemctl --failed.
Для обычных служб параметр не нужен: их немного, и состояние полезно хранить.
Связанные ошибки
- Сокет отклоняет соединения: достигнут MaxConnectionsПри Accept=yes число одновременных экземпляров ограничено. Как поднять предел и когда режим по соединению не подходит.
- Сокет отключён: сработало ограничение частоты активацийСообщение о слишком частых срабатываниях сокета: служба падает сразу после запуска и снова вызывается соединением.
Рядом стоящие параметры
Источники
- systemd.unit(5)
- Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)