Вики / Службы и systemd
systemd
Init-система и менеджер служб (PID 1): юниты, цели, зависимости, журналы.
systemd — первый процесс системы (PID 1) и менеджер служб большинства современных дистрибутивов. Он запускает и контролирует юниты, разрешает зависимости между ними и параллелит загрузку.
Типы юнитов:
| Тип | Расширение | Что описывает |
|---|---|---|
| service | .service |
служба/демон (nginx, sshd) |
| socket | .socket |
сокет активации |
| timer | .timer |
расписание (замена cron) |
| mount | .mount |
точку монтирования |
| target | .target |
группу юнитов (аналог runlevel) |
Управление — через systemctl, журналы — через journalctl.
Юниты ищутся в (по возрастанию приоритета):
/lib/systemd/system/— пакетные (не редактировать);/etc/systemd/system/— локальные переопределения (редактировать здесь).
Структура .service:
[Unit]
Description=My App
After=network-online.target
[Service]
ExecStart=/usr/bin/myapp
Restart=on-failure
User=myapp
[Install]
WantedBy=multi-user.target
Правильный способ доработать чужой юнит — drop-in, не правка оригинала:
sudo systemctl edit nginx # создаёт /etc/systemd/system/nginx.service.d/override.conf
sudo systemctl daemon-reload # перечитать юниты после ручных правок
Цель — группа юнитов, аналог уровней загрузки:
multi-user.target— обычный сервер (без GUI);graphical.target— с графикой;rescue.target— однопользовательский режим восстановления.
systemctl get-default # текущая цель по умолчанию
sudo systemctl set-default multi-user.target
systemctl isolate rescue.target # переключиться сейчас
Служба не стартует
systemctl status <unit>— код выхода и последние строки журнала.journalctl -xeu <unit>— подробности с пояснениями.- После ручной правки юнита всегда
sudo systemctl daemon-reload.
«Unit not found»
Проверь имя и путь: systemctl cat <unit>. Если правил файл — daemon-reload.
Долгая загрузка
systemd-analyze blame — что тормозит; systemd-analyze critical-chain.
systemctl status nginx # состояние
systemctl start|stop|restart nginx
systemctl enable|disable nginx # автозапуск
systemctl reload nginx # перечитать конфиг без обрыва
systemctl daemon-reload # после правки юнит-файлов
journalctl -u nginx -f # логи службы
systemd-analyze blame # тайминги загрузки
См. также
- journalctl — Логи и аудит
- systemctl — Службы и systemd
- nginx — Службы и systemd
- 📖 Теория: подробнее