Основы командной строки Linux и запуск сервисов

Фоновые процессы и автозапуск: systemd unit и journalctl

Содержание курса

Когда мы запускали веб-приложение в терминале, оно занимало сеанс целиком: пока сервер работает, в этой же консоли нельзя выполнять другие команды, а закрытие окна или обрыв SSH-сессии сразу гасит процесс. Чтобы программа работала непрерывно в фоне и сама поднималась при перезагрузке системы, управление ей передают системному менеджеру.

1. Устройство service-файла в systemd

В Ubuntu главным процессом инициализации операционной системы выступает systemd. Он запускается ядром первым (получает идентификатор PID 1) и управляет фоновыми программами. Каждая служба описывается текстовым конфигурационным файлом — юнитом (unit file). Пользовательские службы операционной системы хранятся в каталоге /etc/systemd/system/ и имеют суффикс .service.

Файл конфигурации состоит из трёх ключевых секций:

  1. [Unit] — содержит общие метаданные и зависимости. Директива Description задаёт человекочитаемое описание сервиса, которое будет видно в статусе и системных отчётах.
  2. [Service] — определяет параметры запуска процесса. Параметр User указывает, от чьего имени запускать приложение. Запуск от непривилегированного пользователя, а не от root, ограничивает возможный ущерб при уязвимости в коде. WorkingDirectory задаёт текущую папку для процесса при старте. Параметр ExecStart задаёт команду, которую менеджер выполнит для старта приложения. Директива Restart=on-failure указывает systemd автоматически перезапускать упавшую программу, если она завершилась с ненулевым кодом возврата или была аварийно остановлена сигналом.
  3. [Install] — содержит инструкции по включению службы в автозагрузку. Строка WantedBy=multi-user.target привязывает сервис к стандартному многопользовательскому режиму, в котором операционная система загружается при обычном старте без графической оболочки.

В строке ExecStart особенно важно указать полный абсолютный путь к интерпретатору виртуального окружения проекта: /home/student/devops-demo/.venv/bin/python. Если написать просто python, systemd обратится к системному интерпретатору по стандартным системным путям, где нет библиотек, установленных в изолированное окружение приложения.

Начать заново?

Помощник начнёт новый диалог по этой задаче. Текущая переписка останется в истории до конца срока хранения.

О переписке

Можно приложить до трёх фото PNG, JPEG или WebP по 5 МБ.

Переписка и фото хранятся 90 дней после последнего принятого сообщения. Преподаватель получит доступ к диалогу, когда вы попросите его помочь.

Проверка решения остаётся отдельным действием.