Генератор файла сервиса 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 и активацией за несколько минут.