Найти в Дзене
UFO.Hosting

Что такое systemctl и как им пользоваться

Если у вас есть сервер на Linux или просто хотите лучше понимать внутреннюю кухню Unix-подобных систем, рано или поздно вы столкнетесь с командой systemctl. Это основной инструмент управления systemd — современным менеджером служб и процессов, который отвечает за запуск системы, старт сервисов, их остановку, автозагрузку и множество связанных вещей. Если совсем упрощать, то systemctl — это такой пульт управления для всего, что systemd умеет запускать и контролировать: от веб-сервера и SSH до таймеров, точек монтирования и системных целей загрузки. По промокоду DZEN вы получите скидку на заказ VPS или dedicated от UFO.Hosting. С этим кодом вы сможете запустить свои проекты на надежной и производительной платформе, готовой к любым нагрузкам. Systemd работает с объектами, которые называются юнитами. Юнит — это описание того, что нужно запустить и как это контролировать. Самые популярные типы юнитов: Команда обычно выглядит так: systemctl <действие> <юнит> Например: systemctl status ssh sy
Оглавление

Если у вас есть сервер на Linux или просто хотите лучше понимать внутреннюю кухню Unix-подобных систем, рано или поздно вы столкнетесь с командой systemctl.

Это основной инструмент управления systemd — современным менеджером служб и процессов, который отвечает за запуск системы, старт сервисов, их остановку, автозагрузку и множество связанных вещей.

Если совсем упрощать, то systemctl — это такой пульт управления для всего, что systemd умеет запускать и контролировать: от веб-сервера и SSH до таймеров, точек монтирования и системных целей загрузки.

По промокоду DZEN вы получите скидку на заказ VPS или dedicated от UFO.Hosting. С этим кодом вы сможете запустить свои проекты на надежной и производительной платформе, готовой к любым нагрузкам.

Немного контекста: что такое systemd и «юниты»

Systemd работает с объектами, которые называются юнитами. Юнит — это описание того, что нужно запустить и как это контролировать. Самые популярные типы юнитов:

  • service — службы. В большинстве повседневных задач вы будете иметь дело именно с этим видом юнитов.
  • timer — таймеры.
  • socket — сокеты для socket-активации.
  • mount — точки монтирования.
  • target — цели загрузки, которые объединяют набор сервисов.

Базовая логика работы systemctl

Команда обычно выглядит так:

systemctl <действие> <юнит>

Например:

systemctl status ssh

systemctl restart nginx

systemctl enable docker

Обратите внимание: расширение .service чаще всего можно не писать — systemd сам догадается.

Как посмотреть состояние службы

Начать почти всегда стоит со статуса:

systemctl status nginx

В ответ вы увидите, запущен ли сервис, когда он стартовал, какой у него главный процесс, последние строки логов и причину ошибки, если запуск не удался. Это один из самых полезных экранов при диагностике.

Если нужен только короткий факт «работает/не работает», можно так:

systemctl is-active nginx

Команда вернёт active, inactive, failed. Это очень удобно для скриптов.

Запуск, остановка и перезапуск

Самый частый набор действий:

systemctl start nginx

systemctl stop nginx

systemctl restart nginx

Иногда сервису достаточно не полного перезапуска, а перечитывания конфигурации:

systemctl reload nginx

Важно понимать разницу: restart останавливает и запускает заново, а reload просит сервис применить конфиг без остановки.

Автозагрузка: enable и disable

Запущенный сервис не всегда будет запускаться при старте системы. За автозагрузку отвечают команды:

systemctl enable nginx

systemctl disable nginx

Если вы хотите включить автозагрузку и сразу запустить сервис, есть удобная форма:

systemctl enable --now nginx

И обратный вариант — отключить и остановить автозагрузку:

systemctl disable --now nginx

Как посмотреть список сервисов и юнитов

Когда вы не уверены в названии, помогают списки. Активные юниты, которые сейчас загружены и работают вызываются следующей командой:

systemctl list-units

Для доступа всех известных юнитов выполните:

systemctl list-unit-files

Также вы можете фильтровать фильтровать юниты по типу. Например, если нужно показать только сервисы:

systemctl list-units --type=service

Что делать, если вы изменили unit-файл

Если вы правили unit-файл вручную (или поставили новый), systemd нужно перечитать конфигурацию:

systemctl daemon-reload

Это не перезапуск сервисов, а обновление внутренних данных systemd. После этого обычно делают restart нужной службы.

Как правильно отредактировать сервис

Одна из типичных ошибок новичков — править unit-файл прямо в /usr/lib/systemd/system/… или /lib/systemd/system/…. При обновлении пакета изменения могут исчезнуть.

Для безопасной настройки используйте override:

systemctl edit nginx

Откроется редактор, где вы создадите файл переопределения (обычно в /etc/systemd/system/nginx.service.d/override.conf). Туда добавляют только нужные строки, например лимиты или параметры запуска.

Посмотреть исходный unit:

systemctl cat nginx

А увидеть все параметры, которые systemd знает о юните:

systemctl show nginx

Как связаны systemctl и логи

С помощью статуса можно посмотреть последние строки, однако полноценные логи лучше всего смотреть через журнал systemd — journalctl. Чаще всего используют:

journalctl -u nginx

Логи за текущую загрузку:

journalctl -u nginx -b

Если сервис не стартует, связка systemctl status + journalctl -u <service> почти всегда даёт ответ, где проблема.

systemctl --user: управление службами в рамках пользователя

Systemd умеет запускать не только системные, но пользовательские сервисы. Например, это удобно для фоновых задач без root-доступа.

Пример:

systemctl --user status

systemctl --user start myapp.service

Чтобы пользовательские сервисы работали без активного входа в систему, иногда включают lingering:

loginctl enable-linger <username>

Итог

systemctl полезен тем, что даёт единый понятный интерфейс управления сервисами: запуск, остановка, автозагрузка, проверка состояния и базовая диагностика. Если вы освоите базовые команды, администрирование станет заметно проще: вместо догадок вы будете быстро видеть, что именно происходит и почему.