Linux Labs

Система изнутри: ресурсы, ядро, процессы / Ступень 2 из 12

Память, swap и OOM killer

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 5 из 9 · на машине · 4 мин

Дополнение юнита

Подними потолок lab-thumbs так, чтобы правка пережила обновление пакета.

Файл юнита lab-thumbs лежит в /usr/lib/systemd/system — этот каталог принадлежит пакетам, и обновление перезапишет файл вместе с твоей правкой. Свои настройки кладут в дополнение юнита (drop-in): файл .conf в каталоге /etc/systemd/system/<юнит>.d/. В нём — только то, что меняешь, под заголовком своей секции. Остальное systemd берёт из основного файла.

bash
d=/etc/systemd/system/lab-thumbs.service.d
sudo mkdir -p $d
printf '[Service]\nMemoryMax=128M\n' | sudo tee $d/memory.conf
sudo systemctl daemon-reload
systemctl status lab-thumbs

Файлы юнитов systemd читает при запуске и по systemctl daemon-reload. Без него новый файл не действует: systemctl show -p MemoryMax печатает прежний потолок. После daemon-reload потолок работающей службы меняется сразу. В systemctl status появилась строка Drop-In, а через несколько секунд служба пройдёт всю очередь: панораме с копией хватает 128 МиБ. systemctl cat lab-thumbs покажет основной файл и дополнение подряд.

Проверь себя 1 вопрос

Ты положил drop-in с MemoryMax=96M, а systemctl show -p MemoryMax печатает infinity. Что сделаешь?

  • restart не перечитывает файлы юнитов: systemd напомнит, что файлы изменились, и запустит службу без потолка.

  • Правку в файле пакета сотрёт обновление, и без перечитывания настроек systemd её тоже не увидит.

systemd читает файлы юнитов при запуске и по daemon-reload. После него потолок применяется и к работающей службе.

Главное в шаге

  • Файлы юнитов в /usr/lib/systemd/system принадлежат пакетам, свои настройки — в drop-in /etc/systemd/system/<юнит>.d/*.conf.
  • После правки — systemctl daemon-reload; потолок памяти работающей службы меняется без перезапуска.
  • systemctl cat показывает основной файл юнита и все дополнения.
Ubuntu 24.04
Загрузка…