Wiki
Инфраструктура

systemd — что это простыми словами

systemd — init-система и менеджер сервисов Linux (замена SysV init с 2010). unit-файлы, systemctl, journalctl, таймеры. Стандарт всех современных дистрибутивов.

systemd — init-система (PID 1) и супервизор сервисов для Linux, разработан Lennart Poettering (Red Hat) с 2010 года. Заменил SysV init во всех крупных дистрибутивах (Ubuntu 15.04+, Debian 8+, RHEL 7+, Fedora 15+, Arch, openSUSE).

Ключевые компоненты: (1) systemctl — управление сервисами (`start/stop/status/enable`), (2) journalctl — просмотр логов (централизованный, бинарный, indexable), (3) unit-файлы в `/etc/systemd/system/` — декларативное описание сервиса, (4) timer — cron-replacement с точностью до секунды, (5) socket-activation — запуск сервиса при первом коннекте, (6) cgroups v2 — лимиты CPU/RAM встроены.

Пример unit-файла: ``` [Unit] Description=My web app After=network.target [Service] ExecStart=/usr/bin/node /opt/app/server.js Restart=on-failure User=app [Install] WantedBy=multi-user.target ``` Поместить в `/etc/systemd/system/myapp.service`, `systemctl enable --now myapp`.

Критика: systemd "монолитен", берёт на себя слишком много (network, DNS, boot, logind, ...). Философия KISS ломается. Но на практике — вся Linux-экосистема на нём, ретирироваться поздно. Alpine и Void Linux — редкие альтернативы (OpenRC, runit).

Частые вопросы

Как убрать systemd-логи?
Нельзя выключить, но можно ограничить: `SystemMaxUse=500M` в `/etc/systemd/journald.conf`. Или пересылать в rsyslog.
systemd-timers vs cron?
Systemd-timers надёжнее (не молчаливо не выполняется при выключенной машине — есть persistent=true), логи в journalctl. Для нового кода — timers.

Смотрите также