Фоновые процессы и автозапуск: systemd unit и journalctl
Содержание курса
3. Управление службой и автозапуск через systemctl
После создания нового файла или изменения существующего менеджер systemd ничего о нём не знает, пока его конфигурацию не перечитают с диска. Для этого выполняется команда перезагрузки конфигурации:
sudo systemctl daemon-reload
Команда systemctl enable отвечает только за автозапуск: она создаёт символическую ссылку на юнит в каталоге целевого режима multi-user.target.wants. Если вызвать sudo systemctl enable devops-demo без дополнительных параметров, служба будет добавлена в очередь загрузки ОС, но прямо сейчас не запустится — процесс останется неактивным. Чтобы зарегистрировать автозапуск и запустить сервис одной командой, передают флаг --now:

sudo systemctl enable --now devops-demo
Проверить состояние службы можно командой status:
systemctl status devops-demo
В выводе отобразится блок информации: статус active (running), идентификатор запущенного процесса (PID), используемый объём памяти и последние строки сообщений. Для автоматических проверок в скриптах используют команду systemctl is-active devops-demo. Она выводит текущее состояние службы (например, active, inactive, failed или activating), а результат сообщает через код завершения: 0, если служба активна, и ненулевой код при любом другом состоянии.
Проверим работу службы запросом внутри гостевой виртуальной машины:
curl http://127.0.0.1:8000/health
Сервер вернёт ответ от приложения. Однако если вы попытаетесь открыть http://127.0.0.1:18000 в браузере на основном компьютере с Windows, соединение будет сброшено. Правило проброса портов VirtualBox NAT перенаправляет трафик с порта 18000 хоста на внешний сетевой адрес гостевой виртуальной машины, а процесс слушает только внутренний интерфейс 127.0.0.1. Прямой доступ снаружи появится позже, когда перед приложением будет настроен обратный прокси-сервер.
