Управление службами НАЙС.ОС через systemd¶
systemd — системный менеджер НАЙС.ОС: запускает службы, объединяет их зависимости, отслеживает завершение процессов и предоставляет журнал через journalctl. В редакции CLOUD на нём основаны сеть (systemd-networkd), DNS (systemd-resolved), SSH, обслуживание контейнеров и многие фоновые задания.
Понятие unit¶
| Вид unit | Назначение | Пример |
|---|---|---|
.service |
процесс/служба | systemd-networkd.service |
.socket |
сокетная активация | сокеты сервисов при их наличии |
.timer |
запуск по расписанию | периодические задания |
.mount |
файловая система | точка монтирования |
.target |
этап/группа зависимостей | multi-user.target |
Сборочный рецепт НАЙС.ОС выбирает multi-user.target как базовую системную цель. Это соответствует серверной системе без обязательного графического рабочего стола.
Начните с чтения состояния¶
systemctl --failed
systemctl list-units --type=service --state=running
systemctl status systemd-networkd --no-pager
systemctl is-enabled systemd-networkd
systemctl cat systemd-networkd
active означает, что служба сейчас работает, а enabled — что для неё созданы связи автозапуска. Это разные свойства: служба может быть запущена вручную, по зависимости или сокету без enabled.
Основные действия¶
# Изучить журнал конкретной службы:
journalctl -u sshd -b -n 100 --no-pager
# Показать зависимости:
systemctl list-dependencies sshd
# Показать параметры службы:
systemctl show sshd -p FragmentPath -p ExecStart -p ActiveState
Для управляемой не критичной службы доступны действия start, stop, restart, reload, enable, disable и daemon-reload. Однако применять их следует только после понимания влияния на пользователей и зависимости.
Не перезапускайте критичные службы без плана
systemctl restart systemd-networkd в SSH-сеансе может оборвать управление. systemctl restart sshd способен завершить новые подключения при ошибочном конфиге. Используйте консоль и предварительную проверку.
Загрузка новой конфигурации unit¶
При изменении unit-файла или drop-in:
daemon-reload перечитывает конфигурацию менеджера и не перезапускает саму службу. Отдельный restart/reload нужен только при необходимости применить новые параметры процессу.
Как узнать, почему сервис не запустился¶
systemctl status ИМЯ_СЛУЖБЫ --no-pager -l
journalctl -u ИМЯ_СЛУЖБЫ -b --no-pager -n 150
systemctl show ИМЯ_СЛУЖБЫ -p Result -p ExecMainStatus -p Restart
Используйте реальное имя unit. Для сетевых служб отдельно проверяйте состояние интерфейсов и доступ к DNS: активный systemd-unit не доказывает готовность сети.
См. журналирование и автозапуск/таймеры.