Ответ
systemd — это современная система инициализации и менеджер служб для Linux, ставшая стандартом в большинстве дистрибутивов (RHEL/CentOS 7+, Ubuntu 16.04+, Debian 8+). Она заменяет старые системы SysVinit и Upstart.
Основные функции и компоненты в контексте DevOps:
- Управление службами (демонами): Основная задача — запуск, остановка, перезагрузка и наблюдение за системными службами.
- Параллельный запуск: Запускает службы параллельно, где это возможно, что значительно ускоряет загрузку системы.
- Управление зависимостями: Службы объявляют свои зависимости (через
Requires=,Wants=,After=), и systemd строит граф запуска. - Журналирование: Компонент
journaldсобирает логи ядра, системных служб и приложений в централизованный структурированный журнал. - Управление точками монтирования, сокетами, таймерами: Позволяет активировать службы по событию (например, по подключению к сокету или по таймеру).
Основные команды для управления службами:
# Проверить статус службы (например, Nginx или Docker)
systemctl status nginx
# Запустить, остановить, перезапустить службу
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
# Включить/отключить автозапуск службы при загрузке
systemctl enable nginx
systemctl disable nginx
# Просмотр логов службы в реальном времени (очень часто используется)
journalctl -u nginx -f
# Перезагрузить конфигурацию systemd после изменения файлов служб
systemctl daemon-reload
Пример файла службы для собственного приложения (/etc/systemd/system/myapp.service):
[Unit]
Description=My Python API Service
After=network.target
Requires=docker.service # Пример зависимости от Docker
[Service]
Type=simple
# В DevOps часто запускаем контейнеры
ExecStart=/usr/bin/docker run --name myapp-api my-registry.com/myapp:latest
ExecStop=/usr/bin/docker stop myapp-api
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target