NSSM — удобное создание и управление службами Windows

Использование NSSM для управления службамиРанее на сайте публиковались материалы о создании служб Windows, преимущественно вручную. Однако, задачу можно упростить с помощью сторонних инструментов.

NSSM или «Non-Sucking Service Manager» — один из таких инструментов, позволяющих легко создавать и настраивать службы Windows 11/10 или предыдущих версий системы. О нём и пойдёт речь далее.

Использование NSSM

Скачать NSSM можно с официального сайта. Учитывайте, что для Windows 10 и 11 требуется загрузить предварительную версию. 2.24-101 (или более новый билд), релиз nssm 2.24 (2014) не подойдет.

Загруженный с официального сайта архив достаточно распаковать в удобное расположение. Фактически, вам потребуется лишь один файл nssm.exe в нужной разрядности, соответствующей разрядности вашей ОС.

Сами же шаги по созданию службы возможны в графическом интерфейсе:

  1. Нажмите клавиши Win+R на клавиатуре, введите
    путь\к\nssm.exe install ИмяСлужбы

    и нажмите Ctrl+Shift+Enter. Чтобы каждый раз не вводить путь, вы можете добавить nssm.exe в переменную среды PATH. Откроется графический интерфейс с несколькими вкладками.

  2. Application — задайте путь к исполняемому файлу службы, рабочую папку, параметры запуска.
  3. Details — при необходимости укажите отображаемое имя, описание службы, параметры запуска.
  4. Logon — укажите от какой учетной записи будет запущена служба (по умолчанию — Система).
  5. Dependencies — зависимости службы, если есть.
  6. Process — приоритет процесса и назначение ядер процессора.
  7. Shutdown — действия при отключении службы. Например, может посылать Ctrl+C в выполняемый вами скрипт Python при отключении службы в системной оснастке Windows
  8. Exit Actions — действия при выходе. Например, автоматический перезапуск службы.
  9. I/O — перенаправление операций ввода-вывода (журналы, ошибки и другие).
  10. Environment — переменные окружения вашей службы.
  11. Hooks — выполнение команд при определенных событиях.
  12. Не обязательно задавать все параметры. Укажите нужные и для установки нажмите кнопку Install Service, вы увидите уведомление о том, что служба была успешно установлена.

Альтернативный вариант — использование командной строки. Простой пример создания службы:

  • Запустите командную строку от имени администратора.
  • Введите команду (если путь содержит пробелы, возьмите его в кавычки):
    путь\к\nssm.exe install ИмяСлужбы путь_к_исполняемому_файлу параметры_запуска

    и нажмите Enter.

  • Если всё было сделано верно, вы увидите, что служба была успешно создана.
  • Дополнительно вы можете установить рабочую папку службы:
    nssm.exe set ИмяСлужбы AppDirectory путь_к_папке
  • Задать пути вывода журналов службы (выводы print) и ошибок:
    nssm.exe set ИмяСлужбы AppStdout путь_к_файлу
    nssm.exe set ИмяСлужбы AppStderr путь_к_файлу
  • Запустить службу можно с помощью
    nssm start ИмяСлужбы

    или в services.msc

  • Полный список доступных параметров вы можете получить, запустив исполняемый файл nssm.exe:Список параметров командной строки NSSM

С помощью параметра remove вы можете аналогичным образом удалить службы с помощью nssm.exe как в графическом интерфейсе, так и в интерфейсе командной строки. Это может быть удобнее чем удаление службы Windows вручную.

Для чего это может потребоваться

Может возникнуть вопрос: а в чем цель мероприятия для обычного пользователя? Наиболее частая задача — обеспечение автоматического запуска какого-либо инструмента и его работу даже без входа в Windows, например, медиа-сервера или игрового сервера, инструментов синхронизации, таких как Syncthing.

Другие возможные сценарии — запуск собственных скриптов для выполнения повторяющихся задач в виде служб или утилит, предоставляющих доступ через веб-интерфейс в локальной сети или через Интернет.

NSSM (Non-Sucking Service Manager) позволяет осуществить это быстро, легко и безопасно, при условии, что вы уверены в безопасности процессов, которые вы запускаете в качестве служб.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *