Перейти к содержимому
Linux

systemd без страха: units, services, targets, journalctl и зависимости

Практическое объяснение systemd: как устроены unit-файлы, чем service отличается от target, как пользоваться systemctl/journalctl и безопасно переопределять настройки.

systemd проще воспринимать не как «огромную замену init», а как менеджер объектов — units. Сервис, mount, socket, timer, target и device описываются единым механизмом зависимостей и состояний.

Обзор архитектуры systemd

Главные типы units

  • .service — процесс/daemon;
  • .socket — socket activation;
  • .timer — запуск по расписанию;
  • .mount — файловая система;
  • .path — реакция на изменение пути;
  • .target — логическая группа units.

Базовые команды

systemctl status nginx
systemctl start nginx
systemctl restart nginx
systemctl reload nginx
systemctl enable --now nginx

Логи

journalctl -u nginx
journalctl -u nginx --since today
journalctl -b -p warning

Target вместо runlevel

multi-user.target примерно соответствует традиционному multi-user режиму, а graphical.target добавляет графический вход. Старые номера runlevel сейчас нужны главным образом для понимания legacy-документации.

Сравнение systemd targets и System V runlevels

Не редактируйте vendor unit напрямую

sudo systemctl edit nginx

Так создаётся drop-in override в /etc/systemd/system/..., который не будет затёрт обновлением пакета.

Посмотреть зависимости

systemctl list-dependencies nginx.service
systemctl cat nginx.service

Если загрузка стала долгой

systemd-analyze
systemd-analyze blame
systemd-analyze critical-chain

Не отключайте «медленный» unit до понимания, кто от него зависит. Задержка может быть симптомом DNS, сети, диска или недоступного mount.

Поделиться

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *