Команда systemctl в Linux

Linux 命令大全Справочник команд Linux


Что такое systemctl

systemctl — это инструмент командной строки в системах Linux, используемый для управления системным и сервисным менеджером systemd. Являясь ключевым компонентом современных дистрибутивов Linux, он заменяет традиционную систему инициализации и команды управления службами.

Введение в systemd

systemd — это системный и сервисный менеджер, который:

  • Работает как PID 1 (первый запускаемый процесс)
  • Отвечает за запуск, остановку и управление всеми остальными процессами
  • Обеспечивает возможность параллельного запуска, значительно ускоряя загрузку системы
  • Поддерживает запуск служб по требованию
  • Обеспечивает сбор журналов (через journald)

Базовый синтаксис systemctl

systemctl [选项] [命令] [单元名称]

Общие параметры

Опция Описание
-t, --type Указать тип юнита (service, socket, device и т. д.)
-a, --all Показать все юниты, включая неактивные
--state Фильтровать юниты по состоянию
-l, --full Показать полную информацию о юните
-H, --host Работать с удалённым хостом

Команды управления службами

Запуск/остановка/перезапуск служб

Пример

# Запустить сервис
sudo systemctl start [имя службы]

# Остановить службу
sudo systemctl stop [имя службы]

# Перезапустить службу
sudo systemctl restart [имя службы]

# Перезагрузить конфигурацию (без перезапуска службы)
sudo systemctl reload [имя службы]

Просмотр состояния службы

Пример

# Просмотреть состояние одной службы
systemctl status [имя службы]

# Просмотреть все запущенные службы
systemctl list-units --type=service --state=running

# Просмотреть службы с ошибками
systemctl --failed

Включение/отключение служб

Пример

# Включить службу (автозапуск при загрузке)
sudo systemctl enable [имя службы]

# Отключить службу (отменить автозапуск при загрузке)
sudo systemctl disable [имя службы]

# Проверить, включена ли служба
systemctl is-enabled [имя службы]

Управление unit-файлами

Расположение unit-файлов

  • Системные unit-файлы:/usr/lib/systemd/system/
  • Собственные unit-файлы администратора:/etc/systemd/system/

Основные операции с unit-файлами

Пример

# Перезагрузить все unit-файлы (необходимо после изменения конфигурации)
sudo systemctl daemon-reload

# Показать содержимое файла юнита
systemctl cat [имя юнита]

# Редактировать файл юнита (создаёт файл переопределения)
sudo systemctl edit [имя юнита] --full

Управление состоянием системы

Управление питанием системы

Пример

# Завершение работы
sudo systemctl poweroff

# Перезагрузка
sudo systemctl reboot

# Приостановка
sudo systemctl suspend

# Гибернация
sudo systemctl hibernate

Уровни выполнения системы

Пример

# Получить текущую цель (уровень выполнения)
systemctl get-default

# Установить цель по умолчанию
sudo systemctl set-default [имя цели]

# Переключить цель (вступает в силу немедленно)
sudo systemctl isolate [имя цели]

Общие цели:

  • graphical.target - режим графического интерфейса
  • multi-user.target - многопользовательский текстовый режим
  • rescue.target - режим восстановления
  • emergency.target - аварийный режим

Практические примеры

Пример 1: Управление службой Nginx

Пример

# Запустить Nginx
sudo systemctl start nginx

# Включить автозапуск при загрузке
sudo systemctl enable nginx

# Проверить статус
systemctl status nginx

# Проверить конфигурацию, затем перезагрузить
sudo nginx -t  # Сначала проверить конфигурацию
sudo systemctl reload nginx

Пример 2: Создание пользовательской службы

  1. Создайте файл службы/etc/systemd/system/myapp.service:

Пример

[Unit]
Description=Моё пользовательское приложение
After=network.target

[Service]
ExecStart=/usr/bin/python3 /opt/myapp/app.py
WorkingDirectory=/opt/myapp
User=myappuser
Group=myappgroup
Restart=always

[Установка]
WantedBy=multi-user.target
  1. Включите и запустите службу:

Пример

sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp

Устранение распространённых проблем

Служба не запустилась

  1. Просмотр подробных логов:

    journalctl -u [服务名] -xe
  2. Проверьте зависимости:

    systemctl list-dependencies [服务名]
  3. Запустите в режиме отладки:

    systemctl status [服务名] -l --no-pager

Анализ производительности

Пример

# Показать время загрузки системы
systemd-analyze

# Показать время запуска каждой службы
systemd-analyze blame

# Создать диаграмму загрузки (требуется графический интерфейс)
systemd-analyze plot > boot.svg

Linux 命令大全Справочник команд Linux

Другие расширения