hostprofi.ru
Подобрать хостинг
Термин·буква S

systemctl

краткое определение

systemctl — основная утилита управления systemd: запуск, остановка, перезапуск сервисов, управление автозапуском и просмотр статуса демонов в Linux.

systemctl — основная утилита командной строки для управления systemd: запуск, остановка, перезапуск сервисов; включение/отключение автозапуска; просмотр статуса и журналов. systemd — система инициализации Linux, заменившая SysVinit и Upstart. systemctl — интерфейс для всего, что делает systemd.

Основные команды

# Управление сервисом
systemctl start nginx          # запустить
systemctl stop nginx           # остановить
systemctl restart nginx        # перезапустить (с остановкой)
systemctl reload nginx         # перечитать конфиг без перезапуска
systemctl status nginx         # статус + последние строки журнала

# Автозапуск
systemctl enable nginx         # включить автозапуск
systemctl disable nginx        # отключить автозапуск
systemctl enable --now nginx   # включить + запустить сейчас

# Система
systemctl list-units --type=service    # список всех сервисов
systemctl list-unit-files              # список unit-файлов
systemctl daemon-reload               # перечитать unit-файлы после изменений
systemctl reboot                      # перезагрузка
systemctl poweroff                    # выключение

Структура unit-файла

[Unit]
Description=My Web Application
After=network.target mysql.service

[Service]
Type=simple
User=www-data
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/node /var/www/myapp/server.js
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Unit-файлы хранятся в /lib/systemd/system/ (системные) и /etc/systemd/system/ (пользовательские, имеют приоритет). После изменения unit-файла: systemctl daemon-reload.

История

systemd разработан Леннартом Пёттерингом (Lennart Poettering) и Кей Сиверсом (Kay Sievers) в Red Hat, впервые включён в Fedora 15 (2011). Ubuntu перешёл на systemd с Ubuntu 15.04 (2015). Debian — с Debian 8 Jessie (2015). RHEL 7/CentOS 7 (2014) — первые корпоративные дистрибутивы с systemd. До systemd использовались SysVinit (init-скрипты в /etc/init.d/) и Upstart (Ubuntu 6.10–14.10).

На что обращать внимание

На VPS systemctl — главный инструмент: systemctl status nginx покажет, запущен ли сервис и последние строки журнала. Если сервис падает в loop — смотри journalctl -u nginx -n 50 для последних 50 строк лога. Для сервисов с пользовательскими данными (Node.js, Python) убедись, что указан WorkingDirectory и правильный User. Опция Restart=on-failure + RestartSec=5 — обязательна для продакшн-сервисов: systemd автоматически перезапустит при краше.

История systemd и systemctl

systemd разработан Леннартом Поттерингом (Lennart Poettering) и Кэем Сиверсом (Kay Sievers) в Red Hat в 2010 году. Версия 1.0 включена в Fedora 15 (2011). Принятие systemd шло постепенно и с полемикой: Ubuntu 15.04 (2015), Debian 8 «Jessie» (2015), RHEL 7 (2014) перешли на systemd. SysVinit и Upstart полностью вытеснены к 2015–2016 году. systemd 253 (2023) — текущая версия с поддержкой Unified Kernel Image (UKI) и TPM2.

Написание systemd-юнита

[Unit]
Description=My Python App
After=network.target

[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/myapp
ExecStart=/opt/myapp/venv/bin/gunicorn app:application
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Файл сохраняется в /etc/systemd/system/myapp.service. После создания: systemctl daemon-reload + systemctl enable --now myapp. Журнал службы: journalctl -u myapp -f — live-поток.

На что обращать внимание

После изменения юнит-файла всегда выполняй systemctl daemon-reload — иначе systemd читает старую версию из кэша. systemctl status показывает последние 5–10 строк лога — для полного лога используй journalctl. Опции Restart=on-failure и RestartSec=5 обязательны для production-сервисов. Для указания зависимостей между сервисами используй Requires= (обязательная) и Wants= (опциональная). Type=notify используется для сервисов, которые сигнализируют systemd о готовности через sd_notify().

Другие термины