Назад к инструментам

Генератор файла сервиса systemd

Укажите исполняемый файл, рабочую директорию, политику перезапуска и пользователя — получите готовый к установке юнит .service (и опциональный сопутствующий .timer), с объяснением каждой сгенерированной строки.

Пресеты

Начните с типичной нагрузки

Загружает разумные значения по умолчанию для полей ниже. Всё остаётся редактируемым после.

[Unit]

Описание и порядок запуска

Секция [Unit] — это метаданные и порядок: она сообщает systemd, что это за сервис и после чего он должен запускаться, но сама по себе ничего не запускает.

Юниты, после которых должен запускаться этот, через пробел.

[Service] — процесс

Что запускать

Требуется абсолютный путь.

По умолчанию равен User, если оставить пустым.

[Service] — окружение

Переменные окружения

Каждая строка становится отдельной строкой Environment=. Используйте EnvironmentFile для секретов, которые вы не хотите держать прямо в файле юнита.

Опционально, абсолютный путь.

[Install]

Когда он запускается автоматически

Секция [Install] имеет значение только для systemctl enable — она указывает, в последовательность загрузки какой цели должен быть включён этот сервис.

[Service] — надёжность

Политика перезапуска

Это не переключатель вкл/выкл — выберите вариант, соответствующий тому, как этот процесс должен падать.

Перезапуск при сбое, ненулевом коде выхода или таймауте — но намеренный «systemctl stop» или чистый exit(0) остаётся без внимания. Обычный выбор для долгоработающего приложения или игрового сервера: он восстанавливается после сбоев, не мешая администратору, который остановил его намеренно.

Секунды ожидания перед перезапуском.

Опционально

Ограничивает, сколько RAM и CPU может использовать этот сервис. Оставьте выключенным, если вам реально не нужен жёсткий потолок.

Проверка

Типичные ошибки

Выглядит чисто — проблем не обнаружено.

Опциональный сопутствующий юнит

Запускает этот сервис по расписанию вместо (или в дополнение к) запуска при загрузке — аналог cron-задания в systemd, привязанный к нагрузкам с Type=oneshot. Предпочитаете обычный cron для чего-то простого? Отдельный инструмент «Генератор cron-заданий» покрывает это — OnCalendar= это другой синтаксис, отличный от cron, и не является прямой заменой.

Вывод

Сгенерированные файлы юнита

my-application.service

[Unit]
Description=My application
After=network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/usr/bin/node /opt/wespner-app/server.js
WorkingDirectory=/opt/wespner-app
User=wespner-app
Environment="NODE_ENV=production"
Environment="PORT=3000"
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Команды установки

sudo cp my-application.service /etc/systemd/system/my-application.service
sudo systemctl daemon-reload
sudo systemctl enable --now my-application.service
journalctl -u my-application.service -f   # follow logs

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

Игровые серверы Wespner с защитой от DDoS, дисками NVMe и активацией за несколько минут.

Посмотреть хостинг