Управление службами: systemctl

Управление службами Linux с systemctl: start, stop, restart, status, enable, disable — как работать с systemd и автозапуском сервисов.

systemd — система инициализации, которая управляет службами (сервисами) в большинстве современных дистрибутивов Linux. Основной инструмент взаимодействия с ней — команда systemctl.

Основные операции со службами

Команда

Действие

systemctl start имя

запустить службу

systemctl stop имя

остановить службу

systemctl restart имя

перезапустить (стоп + старт)

systemctl reload имя

перечитать конфиг без остановки

systemctl status имя

состояние и последние логи

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

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

Вывод:

● nginx.service - A high performance web server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled)
     Active: active (running) since Fri 2024-06-10 12:00:00 UTC; 5min ago
    Process: 789 ExecStart=/usr/sbin/nginx -g daemon on; (code=exited, status=0/SUCCESS)
   Main PID: 790 (nginx)

Jun 10 12:00:00 server nginx[789]: nginx: configuration file /etc/nginx/nginx.conf test is OK

Строка Active: active (running) означает, что служба работает. failed — упала с ошибкой.

Автозапуск при загрузке: enable / disable

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

# Отключить автозапуск
sudo systemctl disable nginx

# Включить И сразу запустить
sudo systemctl enable --now nginx

# Проверить, включён ли автозапуск
systemctl is-enabled nginx

Вывод is-enabled:

enabled

Просмотр всех служб

# Все запущенные юниты
systemctl list-units --type=service --state=running

# Все службы (включая неактивные)
systemctl list-units --type=service

# Службы с ошибками
systemctl --failed

Вывод list-units (фрагмент):

  UNIT              LOAD   ACTIVE SUB     DESCRIPTION
  nginx.service     loaded active running A high performance web server
  ssh.service       loaded active running OpenBSD Secure Shell server
  cron.service      loaded active running Regular background program processing

Просмотр логов: journalctl

journalctl — инструмент для чтения логов systemd.

# Логи конкретной службы
sudo journalctl -u nginx

# Последние 50 строк + следить в реальном времени
sudo journalctl -u nginx -n 50 -f

# Логи с момента последней загрузки
sudo journalctl -b -u nginx

Флаг -f работает как tail -f — выводит новые строки по мере их появления. Удобно при отладке.

Частые ошибки

  • Служба запускается, но не включена — после перезагрузки она не стартует. Используйте enable --now.
  • reload вместо restartreload работает только если служба поддерживает перечитывание конфига «на лету»; для nginx это работает, для многих других — нет.
  • Ошибка «Unit not found» — проверьте точное имя: nginx.service или просто nginx.

Коротко

  • systemctl start/stop/restart/status имя — базовые операции со службой.
  • systemctl enable --now имя — включить автозапуск и сразу запустить.
  • systemctl list-units --type=service — список всех служб.
  • journalctl -u имя -f — следить за логами службы в реальном времени.
Проверьте себя
1. Какая команда запустит nginx И включит его автозапуск при загрузке?
Asudo systemctl start nginx
Bsudo systemctl enable nginx
Csudo systemctl enable --now nginx
Dsudo systemctl restart nginx
2. Чем reload отличается от restart для служб systemd?
AНичем, они одинаковы
Breload перечитывает конфиг без остановки процесса, restart — останавливает и запускает заново
Creload работает быстрее, но теряет данные
Drestart требует пароля, reload — нет
3. Какой командой смотреть логи службы nginx в реальном времени?
Asystemctl logs nginx -f
Bjournalctl -u nginx -f
Ctail -f /var/log/nginx
Dsystemctl status nginx --follow
Поддержать проект