NSSM - это программа службы Helper, похожая на Srvany и Cygrunsrv. Он может запустить любую приложение (например, консоль) в качестве службы NT и перезагрузить службу, если по какой -либо причине не будет.
NSSM также имеет установщик графического обслуживания и удаление.
Это вилка NSSM
Двоичные файлы, которые вы можете найти в выпусках здесь
Оригинальный код: https://git.nssm.cc/nssm/nssm от iain patterson
Документация: Использование, Команды
В примечаниях использования ниже аргументы в отношении программы могут быть записаны в угловых скобках и/или квадратных скобках. означает, что вы должны вставить соответствующую строку и [] означает, что строка не является обязательной. Смотрите примеры ниже ...
Обратите внимание, что повсюду появляется, вы можете заменить отображаемое имя службы.
Чтобы установить сервис, запустить
nssm install <servicename>
Вам будет предложено ввести полный путь к приложению, которое вы хотите запустить, и любые параметры командной строки для передачи в это приложение.
Используйте System Service Manager (Services.msc) для управления расширенными свойствами обслуживания, такими как метод запуска и взаимодействие настольных компьютеров. NSSM может поддерживать эти варианты позже ...
Чтобы установить сервис, запустить
nssm install <servicename> <application> [<options>]
Затем NSSM попытается установить сервис, которая запускает именованное приложение с заданными параметрами (если вы указали что -либо).
Не забудьте приложить пути в «цитаты», если они содержат места!
Если вы хотите включить цитаты в варианты, вам понадобится «» «цитата» », цитаты.
NSSM запустит приложение, перечисленное в реестре, когда вы отправите ему сигнал запуска, и прекратит его при отправке сигнала остановки. Пока что так же похоже на Srvany. Но NSSM является диспетчера обслуживания, не связанного с не сжиганием, и может принять меры, если/когда приложение умирает.
Без конфигурации от вас, NSSM попытается перезапустить себя, если заметит, что приложение погибли, но вы не отправили ему сигнал остановки. NSSM будет продолжать пытаться, останавливаясь между каждой попыткой, пока служба не будет успешно запустить, или вы отправите ему сигнал остановки.
NSSM остановит все более продолжительное время между последующими попытками перезапуска, если служба не сможет своевременно начать, максимум до четырех минут. Это так, что он не потребляет чрезмерное количество процессора, пытаясь начать неудачное приложение снова и снова. Если вы определите причину сбоя и не хотите ждать, вы можете использовать консоль службы Windows (где служба будет показана в приостановленном состоянии), чтобы отправить сигнал продолжения в NSSM, и он повторится в течение нескольких секунд.
По умолчанию NSSM определяет «своевременную способность» быть в пределах 1500 миллисекунд. Вы можете изменить порог для службы, установив количество миллисекундов в качестве значения reg_dword в реестре по адресу hklm System CurrentControlset Services <service> Parameters Appthrottle.
В качестве альтернативы, NSSM может сделать паузу в течение настраиваемого количества времени, прежде чем пытаться перезапустить приложение, даже если оно успешно работает в течение количества времени, указанного AppThrottle. NSSM будет обращаться к значению reg_dword по адресу hklm system currentControlset services <service> parameters aspestartDelay, чтобы количество миллисекундов, чтобы подождать, прежде чем попытаться перезагрузить. Если установлен ApprestArtDelay, и приложение определяется, чтобы подчиняться дросселизму, NSSM приостановит услугу, в зависимости от того, что будет длиннее от задержки настройки перезапуска и рассчитанного периода дроссельной заслонки.
Если AspestArtDelay отсутствует или недействительна, будет применена только дроссельная дроссель.
NSSM будет рассмотреть в реестре в рамках HKLM System CurrentControlSet Services <service> Parameters AppExit для значений String (reg_expand_sz), соответствующих коду выхода приложения. Например, если приложение, выходящее с кодом 1, NSSM будет искать строковое значение в соответствии с AppExit, называемым «1» или, если оно не найдет, вернется к значению AppExit (по умолчанию). Вы можете узнать код выхода для приложения, посоветовавшись с журналом событий системы. NSSM будет регистрировать код выхода, когда приложение выходит.
На основании данных, найденных в реестре, NSSM примет одно из трех действий:
Если данные о значении «перезапустить» NSSM попытается перезапустить приложение, как описано выше. Это его поведение по умолчанию.
Если данные о значении «игнорировать» NSSM не попытается перезагрузить приложение, но продолжит работать самостоятельно. Это эмулирует (обычно нежелательное) поведение Srvany. Консоль служб Windows будет показывать услугу как все еще запускающуюся, даже если приложение вышло.
Если данные о значении являются «выходом», NSSM изящно выйдет. Консоль служб Windows покажет услугу как остановленную. Если вы хотите обеспечить более детальный контроль над восстановлением услуг, вы должны использовать этот код и редактировать действие сбоя вручную. Обратите внимание, что версии Windows до Vista не считают такой выход неудачом. На более старых версиях Windows вы должны использовать «самоубийство» вместо этого.
Если данные о значении являются «самоубийством» NSSM имитацией аварии и выходу без информирования менеджера по обслуживанию. Эта опция должна использоваться только для систем Pre-Vista, где вы хотите применить действие по восстановлению услуг. Обратите внимание, что если контролируемая приложение выходит из кода 0, NSSM будет чтить запрос только на самоубийство, если вы явно настроите ключ реестра для кода выхода 0. Если только действие по умолчанию будет установлено на самоубийство NSSM вместо этого изящно выйдет изящно.
NSSM может установить приоритетный класс управляемого приложения. NSSM будет рассмотреть в реестре в рамках HKLM System CurrentControlSet Services <service> Параметры для пристального приставления в записи REG_DWORD. Допустимые значения соответствуют аргументам с SetPriorityClass (). Если Appiority () отсутствует или недействительным, приложение будет запущено с обычным приоритетом.
NSSM может установить аффинность процессора управляемого приложения. NSSM будет рассмотреть в реестре в рамках HKLM System CurrentControlSet Services <service> Параметры для Appaffinity recaffinity reg_sz. В нем следует указать, что разделенный запятой, перечисленный из нулевых идентификаторов процессора. Диапазон процессоров может быть указан с помощью приборной панели. Никакие другие символы не допускаются в строке.
Например, чтобы указать первое; второй; Третий и пятый процессор, подходящая аппафинность будет 0-2,4.
Если Appaffinity отсутствует или недействительна, NSSM не будет пытаться ограничивать приложение определенными процессорами.
Обратите внимание, что 64-битная версия NSSM может настроить максимум 64 процессоров таким образом, и что 32-разрядная версия может настроить максимальный из 32 процессоров, даже при запуске на 64-битных Windows.
При остановке сервиса NSSM предпринят несколько различных методов убийства контролируемого приложения, каждый из которых может быть отключен при необходимости.
Первый NSSM попытается сгенерировать событие Control-C и отправить его на консоли приложения. Пакетные сценарии или приложения консоли могут перехватить событие и изящно закрыться. Приложения GUI не имеют консолей и не будут отвечать на этот метод.
Во -вторых, NSSM перечисляет все окна, созданные приложением, и отправит им сообщение WM_CLOSE, запрашивая изящный выход.
В -третьих, NSSM перечисляет все потоки, созданные приложением, и отправит им сообщение WM_QUIT, запрашивая изящный выход. Не все потоки приложений имеют очереди сообщения; те, которые не будут отвечать на этот метод.
Наконец, NSSM позвонит в TrumpinateProcess (), чтобы запросить, чтобы операционная система насильно завершала приложение. TerminateProcess () не может быть пойман в ловушку или проигнорирован, поэтому в большинстве случаев заявление будет убито. Тем не менее, нет никакой гарантии, что у него будет возможность выполнить какие -либо операции по Tidyup, прежде чем он выходит.
Любые или все методы выше могут быть отключены. NSSM будет искать HKLM System CurrentControlset Services <service> Parameters appstopmethodskip Значение реестра, которое должно быть типа REG_DWORD, установленное в битовое поле, описывающее, какие методы не должны применяться.
Если Appstopmethodskip включает 1, события Control-C не будут генерироваться. Если Appstopmethodskip включает 2, сообщения WM_CLOSE не будут опубликованы. Если Appstopmethodskip включает 4, сообщения WM_QUIT не будут опубликованы. Если AppStopmethodskip включает 8, TerminateProcess () не будет вызван.
Если, например, вы знали, что приложение не отвечало на события Control-C и не имела очереди сообщений потока, вы можете установить AppStopmethodskip на 5, и NSSM не попытается использовать эти методы, чтобы остановить приложение.
Берегите большую осторожность, когда включите 8 в стоимости AppStopmethodskip. Если NSSM не вызывает завершение processess (), возможно, что приложение не выйдет, когда служба остановится.
По умолчанию NSSM позволит процессам на 1500 мс реагировать на каждый из методов, описанных выше, прежде чем перейти к следующему. Тайм-аут может быть настроен на основе для заметок путем создания записей reg_dword в реестре в рамках HKLM System CurrentControlSet Services <service> Параметры.
Appstopmethodconsole appstopmethodwindow appstopmethodthreads
Каждое значение должно быть установлено на количество миллисекундов, чтобы ждать. Обратите внимание, что тайм -аут применяется к каждому процессу в дереве процессов приложения, поэтому фактическое время для выключения может быть длиннее, чем сумма всех настроенных тайм -аутов, если приложение порождает несколько подпроцессов.
Чтобы пропустить применение приведенных выше методов остановки ко всем процессам в дереве процесса приложения, применяя их только к исходному процессу применения, установите значение hklm System CurrentControlset Services <service> Parameters appkillProcesstree Значение, которое должно быть типа Reg_dword, до 0.
По умолчанию NSSM создаст консольное окно, чтобы приложения, которые способны читать пользовательский ввод, могут это делать - с учетом службы, позволяющей взаимодействовать с рабочим столом.
Создание консоли может быть подавлена путем установки целочисленного (reg_dword) hklm system currentControlset services <service> parameters
NSSM может перенаправить ввод/вывод управляемого приложения на любой путь, способный открывать Createfile (). Это позволяет, например, снимать вывод журнала приложения, который в противном случае записывался бы только на консоль или принимает ввод с последовательного порта.
NSSM будет рассмотреть в реестре в рамках HKLM System CurrentControlSet Services <service> Параметры для ключей, соответствующих аргументам CEARTEFILE (). Все необязательны. Если для конкретного потока не будет указан путь, он не будет перенаправлен. Если дается путь, но какое -либо из других значений опущено, они будут получать разумные значения по умолчанию.
Appstdin: Путь к получению ввода. Appstdout: Путь к получению вывода. Appstderr: Путь к получению вывода ошибок.
Параметры для CreateFile () предоставляются с помощью «appstdinsharemode», «appstdincreationdisposition» и «appstdinflagsandattributes» (и аналогично для Stdout и Stderr).
В целом, если вы хотите, чтобы служба регистрировала свои выводы, установите Appstdout и Appstderr на тот же путь, например, C: users public service.log, и он должен работать. Помните, однако, что путь должен быть доступен для пользователя, управляющего Сервисом.
При использовании перенаправления ввода/вывода NSSM может повернуть существующие выходные файлы перед открытием STDOUT и/или STDERR. Существующий файл будет переименован в суффикс на основе последнего времени записи файла, до Millisecond Precision. Например, файл nssm.log может быть повернут на NSSM-20131221T113939.457.log.
NSSM будет смотреть в реестре в рамках HKLM System CurrentControlSet Services <service> Параметры для записей reg_dword, которые контролируют, как происходит вращение.
Если ApprotateFiles отсутствует или устанавливается на 0, вращение отключено. Любое ненулевое значение обеспечивает вращение.
Если утверждает второстепенные, ненулевые, файл не будет вращаться, если его последнее время записи меньше, чем заданное количество секунд в прошлом.
Если ApprotateBytes является ненулевым, файл не будет вращаться, если он меньше, чем заданное количество байтов. 64-битные размеры файлов могут быть обработаны, установив ненулевое значение ApprotateByteshigh.
Если ApprotatedElay является ненулевым, NSSM сделает паузу для заданного количества миллисекундов после вращения.
Если AppStDoutCopyAndTruncate или AppstderRcopyAndTruncate не нулевой, файл STDOUT (или STDERR соответственно) будет поворачивается, сначала взяв копию файла, а затем усекает исходный файл до нулевого размера. Это позволяет NSSM вращать файлы, которые удерживаются другими процессами, предотвращая успех обычного файла перемещения (). Обратите внимание, что процесс копирования может занять некоторое время, если файл большой, и будет временно потреблять вдвое больше места на дисковом пространстве, чем исходный файл. Также обратите внимание, что приложения, читающие файл журнала, могут не заметить, что размер файла изменился. Использование этой опции в сочетании с ApprotatedElay может помочь в этом случае.
Вращение не зависит от параметров CreateFile (), используемых для открытия файлов. Они будут вращаться независимо от того, будет ли NSSM в противном случае добавить или заменить их.
NSSM также может повернуть файлы, которые достигают порога настроенного размера во время работы службы. Кроме того, вы можете запустить вращение по требованию, выполнив команду
nssm rotate <servicename>
Повороты по требованию произойдут после того, как следующая строка данных будет считан из управляемого приложения, независимо от значения утверждений. Имейте в виду, что если приложение не является особенно словесным, вращение может не произойти в течение некоторого времени.
Чтобы включить онлайн-ротацию по требованию, установите ApprotateOnline на ненулевое значение.
Обратите внимание, что онлайн -вращение требует, чтобы NSSM перехватил ввод приложения и создать выходные файлы от его имени. Это более сложное и подверженное ошибкам, чем просто перенаправление потоков ввода/вывода перед запуском приложения. Поэтому онлайн -ротация не включена по умолчанию.
При перенаправлении вывода NSSM может префикс каждой линии вывода с помощью временной метки в миллисекундном назначении, например:
2016-09-06 10:17:09.451 Pipeline main started
Чтобы включить префикс временной метки, установите ApptimeStamplog на ненулевое значение.
Префикс относится как к Stdout, так и к Stderr. Префикс требует перехвата ввода -вывода приложения так же, как онлайн -ротация. Если оба поворота журнала и префикса TimeStamp включены, вращение будет онлайн.
NSSM может заменить или добавить в среду управляемого приложения. Два многозначных значения реестра строки (reg_multi_sz) распознаются в рамках HKLM System CurrentControlSet Services <service> Параметры.
Appenvironment определяет список переменных среды, которые будут переопределять среду сервиса. Appenvironmentextra определяет список переменных среды, которые будут добавлены в среду службы.
Каждая запись в списке должна быть из ключа формы = значение. Можно опустить значение, но символ является обязательным.
Переменные среды, перечисленные как в Appenvironment, так и в Appenvironmentextra, подвержены нормальному расширению, поэтому возможно, например, обновить системный путь, установив «path = c: bin;%path%» в Appenvironmentextra. Переменные расширяются в том порядке, в котором они появляются, поэтому, если вы хотите включить значение одной переменной в другую переменную, вы должны сначала объявить зависимость.
Поскольку переменные, определенные в приложении, переопределяют существующую среду, невозможно ссылаться на какие -либо переменные, которые были определены ранее.
Например, следующий блок приложения:
PATH=C:WindowsSystem32;C:Windows
PATH=C:bin;%PATH%
Приведет к пути «c: bin; c: windows system32; c: windows», как и ожидалось.
Принимая во внимание, что следующий блок приложения:
PATH=C:bin;%PATH%
Приведет к тому, что путь, содержащий только C: bin, и, вероятно, заставит приложение не начать.
Большинство людей захотят использовать AppenVironmentextra исключительно. Srvany поддерживает только Appenvironment.
Начиная с версии 2.25, NSSM анализирует AppenVironment и саму Appenvironmentextra, прежде чем читать любые другие значения реестра. В результате теперь можно ссылаться на пользовательские переменные среды в приложении, AppDirectory и других параметрах.
Все службы Windows могут быть переданы дополнительными переменными среды, создав многозначное значение реестра строки (reg_multi_sz) с именем с именем HLKM System CurrentControlset Services <service> Environment.
Содержимое этого блока среды будет объединено в системную среду до начала службы.
Обратите внимание, однако, что объединенная среда будет отсортирована в алфавитном порядке до обработки. Это означает, что на практике вы не можете установить, например, Dir =%Programfiles%в блоке окружающей среды, поскольку окружающая среда, передаваемая в услугу Переменные среды, определенные в Appenvironmentextra, не страдают от этого ограничения.
Начиная с версии 2.25, NSSM может получить и устанавливать блок среды, используя команды, аналогичные:
nssm get <servicename> Environment
Стоит повторить, что блок среды доступен для всех сервисов Windows, а не только услуг NSSM.
Среда NSSM переходит к приложению, зависит от того, как настроены различные значения реестра. Следующий поток описывает, как изменяется среда.
По умолчанию: служба наследует системную среду.
Если определенная среда определена: содержание окружающей среды объединяется в окружающую среду.
Если Параметры Appenvironment определены: служба наследует среду, указанную в Appenvironment.
Если parameters appenvironmentextra определено: содержание Appenvironmentextra добавляется в окружающую среду.
Обратите внимание, что Appenvironment переопределяет системную среду и блок объединенной среды. Также обратите внимание, что AppenVironmentExtra гарантированно будет добавлен в среду запуска, если она определена.
NSSM может запустить пользовательские команды в ответ на события приложений. Эти команды называются «крючками» ниже.
Все крючки необязательны. Любые запуска будут запущены с помощью среды, настроенной для службы. NSSM поместит дополнительные переменные в среду, которую крючки могут запросить, чтобы узнать, как и почему они были вызваны.
Крюки классифицируются по событию и действию. Некоторые крючки запускаются синхронно, а некоторые запускаются асинхронно. Крюки, префиксированные *звездочкой, выполняются синхронно. NSSM будет ждать завершения этих крючков, прежде чем продолжить свою работу. Обратите внимание, однако, что все крючки подлежат крайнему сроку, после чего они будут убиты, независимо от того, находятся ли они асинхронно или нет.
Событие: Start - запускается, когда служба просит запустить. *Действие: предварительно вызван перед попытками NSSM запустить приложение. Действие: Пост - вызван после успешного запуска приложения.
Событие: остановка - запускается, когда служба просит остановиться. *Действие: предварительно вызван перед попытками NSSM убить заявку.
Событие: выход - запускается при выходе приложения. *Действие: Пост - вызван после того, как NSSM очистил приложение.
Событие: вращение - запускается при запросе севооборота в Интернете. *Действие: предварительно вызван до NSSM, поворачивает бревна. Действие: Пост - вызван после того, как NSSM вращает журналы.
Событие: Действие питания: изменение - вызвано, когда изменилось состояние мощности системы. Действие: резюме - вызвано, когда система возобновилась из резервного периода.
Обратите внимание, что нет крючка остановки/пост. Это связано с тем, что выпуск/Post вызывается, когда приложение выходит, независимо от того, произошло ли это в ответ на запрос отключения услуг. Стоп/Pre называется только перед изящной попыткой отключения.
NSSM устанавливает переменную среды nssm_hook_version на положительное число. Крюки могут проверить значение числа, чтобы определить, какие другие переменные среды доступны для них.
Если nssm_hook_version равно 1 или выше, эти переменные предоставляются:
Nssm_exe - путь к самому NSSM. Nssm_configuration - Построить информацию для исполняемого файла NSSM, например, 64 -битная отладка. Nssm_version - версия исполняемого файла NSSM. Nssm_build_date - Дата сборки NSSM. Nssm_pid - идентификатор процесса выполняемого исполняемого файла NSSM. Nssm_deadline - Крайний срок миллисекунды, после чего NSSM убьет крюк, если он все еще будет работать. Nssm_service_name - Имя службы, управляемой NSSM. Nssm_service_displayName - отображение имени Сервиса. NSSM_COMMAND_LINE - Командная строка, используемая для запуска приложения. Nssm_application_pid - идентификатор процесса первичного процесса применения. Может быть пустым, если процесс не работает. NSSM_EVENT - Класс событий, запускающий крючок. NSSM_ACTION - Действие события, запускающее крючок. Nssm_trigger - Управление службой, запускающую крючок. Может быть пустым, если крюк не был запускается управлением обслуживанием, например, выход/пост. NSSM_LAST_CONTROL - Последний контроль службы, обрабатываемый NSSM. NSSM_START_REQUESTED_COUNT - количество раз, когда приложение было запрошено запустить. NSSM_START_COUNT - количество раз, когда приложение успешно началось. Nssm_throttle_count - количество раз, когда приложение работало меньше, чем период дроссельной заслонки. Сбросьте до нуля при успешном старте или когда служба явно не разоблачена. Nssm_exit_count - количество раз выйти из выхода приложения. NSSM_EXITCODE - Код выхода приложения. Может быть пустым, если приложение все еще работает или еще не началось. Nssm_runtime - количество миллисекундов, для которых работал исполняемый файл NSSM. NSSM_APPLICATION_RUNTIME - количество миллисекундов, для которых приложение работает с момента его последнего начала. Может быть пустым, если приложение еще не началось.
Будущие версии NSSM могут предоставить больше переменных среды, и в этом случае nssm_hook_version будет установлена на более высокое число.
Крюки настроены путем создания значений String (reg_expand_sz) в реестре, названном в честь действия, размещены под HKLM System CurrentControlSet Services <service> Parameters appevents <event>.
Например, служба может быть настроена для перезапуска, когда система возобновается из резервного режима, установив AppeVents Power Resume на:
%NSSM_EXE% restart %NSSM_SERVICE_NAME%
Чтобы установить крючок на командной строке, используйте
nssm set <servicename> AppEvents <event>/<action> <command>
Обратите внимание, что NSSM преодолеет запуск приложения, если запуск/Pre Hook возвращает код выхода 99.
Служба обычно запускает крючки в следующем заказе:
Start/Pre Start/Post Stop/Pre Exit/Post
Если приложение вылетает и перезапускается NSSM, порядок может быть:
Start/Pre Start/post exit/post start/pre start/post stop/pre exit/post
Если NSSM перенаправляет stdout или stderr, он может быть настроен для перенаправления вывода любых крючков, которые он запускает. Установите AppredIrecthooks на 1, чтобы включить эту функциональность. Крюк, конечно, перенаправляет свой собственный ввод -вывод независимо от NSSM.
NSSM может редактировать настройки существующих служб с помощью того же графического интерфейса, который используется для их установки. Бегать
nssm edit <servicename>
Чтобы поднять графический интерфейс.
NSSM предлагает ограниченные возможности редактирования для услуг, отличных от тех, которые запускают сами NSSM. Когда NSSM просят отредактировать службу, в которой нет настройки реестра приложения*, описанных выше, графический интерфейс позволит редактировать только настройки системы, такие как имя отображения службы и описание.
NSSM может извлечь или устанавливать отдельные параметры обслуживания из командной строки. В целом синтаксис выглядит следующим образом, хотя см. Ниже исключения.
nssm get <servicename> <parameter>
nssm set <servicename> <parameter> <value>
Параметры также могут быть сброшены к их значениям по умолчанию.
nssm reset <servicename> <parameter>
Имена параметров, расположенные NSSM, такие же, как имена записей реестра, описанные выше, например, AppDirectory.
NSSM предлагает ограниченные возможности редактирования для услуг, отличных от тех, которые запускают сами NSSM. Признанные параметры следующие:
Описание: Описание службы. DisplayName: Service Display Name. Окружающая среда: Служба объединенная среда. ImagePath: Путь к исполняемому услугу. ObjectName: учетная запись пользователя, которая запускает службу. Имя: имя ключа службы. Start: Service Startup Type. Тип: тип службы.
Они соответствуют значениям реестра в соответствии с ключом Сервиса HKLM System CurrentControlSet Services <service>.
Обратите внимание, что NSSM будет объединять все аргументы, передаваемые в командной строке с пробелами, чтобы сформировать значение для установки. Таким образом, следующие два вызова будут иметь тот же эффект.
nssm set <servicename> Description "NSSM managed service"
nssm set <servicename> Description NSSM managed service
Appenvironment, Appenvironmentextra и параметры окружающей среды распознают дополнительный аргумент при запросе окружающей среды. Следующий синтаксис будет распечатать все дополнительные переменные среды, настроенные для службы
nssm get <servicename> AppEnvironmentExtra
Принимая во внимание, что приведенный ниже синтаксис будет распечатать только значение переменной ClassPath, если она настроена в блоке среды или в пустой строке, если она не настроена.
nssm get <servicename> AppEnvironmentExtra CLASSPATH
При настройке блока среды каждая переменная должна быть указана как пара клавиш = значения в отдельных аргументах командной строки. Например:
nssm set <servicename> AppEnvironment CLASSPATH=C:Classes TEMP=C:Temp
В качестве альтернативы ключ можно префикс с помощью A + или - - символа, чтобы добавить или удалить пару из блока.
Следующие две строки установлены в классе и температуре:
nssm set <servicename> AppEnvironment CLASSPATH=C:Classes
nssm set <servicename> AppEnvironment +TEMP=C:Temp
Если ключ уже присутствует, указание +клавиша будет переоценить значение при сохранении порядка ключей:
nssm set <servicename> AppEnvironment +CLASSPATH=C:NewClasses
Следующий синтаксис удаляет одну переменную из блока, оставляя любые другие переменные на месте.
nssm set <servicename> AppEnvironment -TEMP
Определение значения -key = удалить переменную только в том случае, если существующее значение соответствует.
Следующий синтаксис не удалит Temp = c: temp
nssm set <servicename> AppEnvironment -TEMP=C:WorkTemporary
+ И - символы являются допустимыми символами в переменных среды. Синтаксис: ключ = значение эквивалентно ключе = значение и может использоваться для установки переменных, которые начинаются с +/- или для явного сброса блока в скрипте:
nssm set <servicename> AppEnvironment :CLASSPATH=C:Classes
nssm set <servicename> AppEnvironment +TEMP=C:Temp
Параметр AppExit требует дополнительный аргумент, указавший код выхода для получения или установки. Действие по умолчанию может быть указано с помощью строки по умолчанию.
Например, чтобы получить действие выхода по умолчанию для службы, вы должны запустить
nssm get <servicename> AppExit Default
Чтобы получить действие выхода, когда приложение уходит с кодом выхода 2, запустите
nssm get <servicename> AppExit 2
Обратите внимание, что если явное действие не настроено для указанного кода выхода, NSSM печатает действие выхода по умолчанию.
Чтобы установить настройку службы, чтобы остановиться, когда приложение уходит с кодом выхода 2, запустите
nssm set <servicename> AppExit 2 Exit
Параметр приложения используется для установки приоритетного класса управляемого приложения. Допустимые приоритеты следующие:
Realtime_priority_class high_priority_class выше_normal_priority_class normal_priority_class ниже_normal_priority_class idle_priority_class
Параметры зависимости и зависимость и зависимость от консерва используются для запроса или установки зависимостей для Сервиса. При настройке зависимостей каждая сервисная или сервисная группа (предшествующая символу +) должна быть указана в отдельных аргументах командной строки. Например:
nssm set <servicename> DependOnService RpcSs LanmanWorkstation
В качестве альтернативы имя зависимости можно префикс с помощью A + или - - символа, соответственно, добавить или удалить зависимость.
Следующие две строки устанавливают зависимости от RPCSS и Lanmanworkstation:
nssm set <servicename> DependOnService RpcSs
nssm set <servicename> DependOnService +LanmanWorkstation
Синтаксис Follwing удаляет зависимость от RPCSS:
nssm set <servicename> DependOnService -RpcSs
Сервисные группы должны, строго говоря, быть префиксированными с символом +. Чтобы указать одну зависимость от группы, символ + может быть префикс с помощью: символа.
Следующие строки эквивалентны, и каждый устанавливает зависимость только от NetBiosGroup:
nssm set <servicename> DependOnGroup NetBIOSGroup
nssm set <servicename> DependOnGroup :NetBIOSGroup
nssm set <servicename> DependOnGroup :+NetBIOSGroup
Тогда как эти строки добавляют к любым существующим зависимостям:
nssm set <servicename> DependOnGroup +NetBIOSGroup
nssm set <servicename> DependOnGroup ++NetBIOSGroup
Параметр имени может быть запрошено, а не установлен. Он возвращает имя реестра сервиса. Это может быть полезно знать, если вы воспользуетесь тем, что вы можете заменить имя отображения службы в любом месте, где требуется синтаксис.
Параметр objectName требует дополнительного аргумента только при настройке имени пользователя. Дополнительным аргументом является пароль пользователя.
Чтобы получить имя пользователя, беги
nssm get <servicename> ObjectName
Чтобы установить имя пользователя и пароль, запустите
nssm set <servicename> ObjectName <username> <password>
Обратите внимание, что аргументированная конкатенация все еще применяется. Следующий вызов действителен и будет иметь ожидаемый эффект.
nssm set <servicename> ObjectName <username> correct horse battery staple
Следующие известные имена пользователей не нуждаются в пароле. Параметр пароля может быть пропущен при их использовании:
"Socalsystem" AKA "System" AKA "NT Authority System" "LocalService" AKA "Local Service" AKA "NT Authority Local Service" "NetworkService" aka "СЕВЕТАЯ СЕВЕТА" АКА "NT Outhorurion СЕВЕТ СЕВЕТ СЕБЕРИЯ" СЕРВИАЛЬНА
Параметр начала используется для запроса или установки типа запуска службы. Действительные типы запуска сервиса следующие:
Service_auto_start: автоматический запуск на загрузке. Service_delayed_start: задержка запуска при загрузке. Service_demand_start: Ручный запуск службы. Service_disabled: служба отключена.
Обратите внимание, что service_delayed_start не поддерживается на версиях Windows до Vista. NSSM установит службу автоматическому запуска, если задержка запуска недоступна.
Параметр типа используется для запроса или установки типа службы. NSSM распознает все документированные в настоящее время типы услуг, но позволит только установить один из двух типов:
Service_win32_own_process: автономная служба. Это дефолт. Service_interactive_process: служба, которая может взаимодействовать с рабочим столом.
Обратите внимание, что служба может быть настроена как интерактивная только в том случае, если она работает под учетной записью Localsystem. Безопасный способ настроить интерактивную службу находится на двух этапах следующим образом.
nssm reset <servicename> ObjectName
nssm set <servicename> Type SERVICE_INTERACTIVE_PROCESS
NSSM предлагает элементарные функции управления обслуживанием.
nssm start <servicename>
nssm restart <servicename>
nssm stop <servicename>
nssm status <servicename>
nssm statuscode <servicename>
Вывод «NSSM Status» и «NSSM StatusCode» - это строка, представляющая состояние службы, например, service_running.
Код выхода «Статус NSSM» будет 0, если статус был успешно получен. Если код выхода не равен нулю, была ошибка.
Код выхода «NSSM StatusCode» будет числовым значением состояния обслуживания, например, 4 для Service_running. Ноль не является действительным кодом состояния обслуживания. Если код выхода равен нулю, была ошибка.
NSSM также может удалить услуги. Бегать
nssm remove <servicename>
Чтобы удалить услугу. Вам будет предложено подтверждение до удаления службы. Постарайтесь не удалять основные системы систем ...
Чтобы удалить услугу без подтверждения из графического интерфейса, запустите
nssm remove <servicename> confirm
Постарайтесь не удалять основные системы систем ...
NSSM входит в журнал событий Windows. Он регистрируется в качестве источника журнала событий и использует уникальные идентификаторы событий для каждого типа сообщения, которое он регистрирует. Новые версии могут добавлять типы событий, но существующие идентификаторы событий никогда не будут изменены.
Из -за того, как NSSM регистрирует себя, вы должны знать, что вы не сможете заменить двоичный NSSM, если у вас открыт зритель событий, и что запуск нескольких экземпляров NSSM из разных мест может сбить с толку, если они не все то же самое.
Следующая команда будет распечатать имена всех услуг, управляемых NSSM:
nssm list
Чтобы увидеть все услуги в системе, а не только NSSM, используйте список All:
nssm list all
Следующая команда будет распечатать идентификатор процесса и исполняемый путь процессов, запускаемых данной службой:
nssm processes <servicename>
Обратите внимание, что если 32-разрядная NSSM запускается в 64-разрядной системе с более старой версией Windows, чем Vista, он не сможет запросить пути 64-битных процессов.
NSSM может сбрасывать команды, которые воссоздают конфигурацию службы. Вывод может быть вставлен в пакетный скрипт, чтобы резервное копирование службы или передачи на другой компьютер.
nssm dump <servicename>
Поскольку конфигурация службы может содержать символы, которые необходимо цитировать или сбежать из командной строки, NSSM старается создать вывод, который будет работать правильно при запуске в качестве сценария, добавляя кавычки и ухода в соответствии с уходом.
Чтобы облегчить копирование услуги, команда дампа принимает второй аргумент, который указывает имя службы, которая будет использоваться на выводе.
nssm dump <servicename> <newname>
Линии в дампе будут ссылаться на службу, показывая конфигурацию.
Чтобы установить нереальный турнирный сервер:
nssm install UT2004 c:gamesut2004systemucc.exe server
Чтобы запустить сервер как пользователь «Games»:
nssm set UT2004 ObjectName games password
To configure the server to log to a file:
nssm set UT2004 AppStdout c:gamesut2004service.log
To restrict the server to a single CPU:
nssm set UT2004 AppAffinity 0
To remove the server:
nssm remove UT2004 confirm
To find out the service name of a service with a display name:
nssm get "Background Intelligent Transfer Service" Name
NSSM is known to compile with Visual Studio 2008 and later. Older Visual Studio releases may or may not work if you install an appropriate SDK and edit the nssm.vcproj and nssm.sln files to set a lower version number. They are known not to work with default settings.
NSSM will also compile with Visual Studio 2010 but the resulting executable will not run on versions of Windows older than XP SP2. If you require compatiblity with older Windows releases you should change the Platform Toolset to v90 in the General section of the project's Configuration Properties.
Thanks to Bernard Loh for finding a bug with service recovery. Thanks to Benjamin Mayrargue (www.softlion.com) for adding 64-bit support. Thanks to Joel Reingold for spotting a command line truncation bug. Thanks to Arve Knudsen for spotting that child processes of the monitored application could be left running on service shutdown, and that a missing registry value for AppDirectory confused NSSM. Thanks to Peter Wagemans and Laszlo Keresztfalvi for suggesting throttling restarts. Thanks to Eugene Lifshitz for finding an edge case in CreateProcess() and for advising how to build messages.mc correctly in paths containing spaces. Thanks to Rob Sharp for pointing out that NSSM did not respect the AppEnvironment registry value used by srvany. Thanks to Szymon Nowak for help with Windows 2000 compatibility. Thanks to François-Régis Tardy and Gildas le Nadan for French translation. Thanks to Emilio Frini for spotting that French was inadvertently set as the default language when the user's display language was not translated. Thanks to Riccardo Gusmeroli and Marco Certelli for Italian translation. Thanks to Eric Cheldelin for the inspiration to generate a Control-C event on shutdown. Thanks to Brian Baxter for suggesting how to escape quotes from the command prompt. Thanks to Russ Holmann for suggesting that the shutdown timeout be configurable. Thanks to Paul Spause for spotting a bug with default registry entries. Thanks to BUGHUNTER for spotting more GUI bugs. Thanks to Doug Watson for suggesting file rotation. Thanks to Арслан Сайдуганов for suggesting setting process priority. Thanks to Robert Middleton for suggestion and draft implementation of process affinity support. Thanks to Andrew RedzMax for suggesting an unconditional restart delay. Thanks to Bryan Senseman for noticing that applications with redirected stdout and/or stderr which attempt to read from stdin would fail. Thanks to Czenda Czendov for help with Visual Studio 2013 and Server 2012R2. Thanks to Alessandro Gherardi for reporting and draft fix of the bug whereby the second restart of the application would have a corrupted environment. Thanks to Hadrien Kohl for suggesting to disable the console window's menu. Thanks to Allen Vailliencourt for noticing bugs with configuring the service to run under a local user account. Thanks to Sam Townsend for noticing a regression with TerminateProcess(). Thanks to Barrett Lewis for suggesting the option to skip terminating the application's child processes. Thanks to Miguel Angel Terrón for suggesting copy/truncate rotation. Thanks to Yuriy Lesiuk for suggesting setting the environment before querying the registry for parameters. Thanks to Gerald Haider for noticing that installing a service with NSSM in a path containing spaces was technically a security vulnerability. Thanks to Scott Ware for reporting a crash saving the environment on XP 32-bit. Thanks to Stefan and Michael Scherer for reporting a bug writing the event messages source. Thanks to Paul Baxter for help with Visual Studio 2015. Thanks to Mathias Breiner for help with Visual Studio and some registry fixes. Thanks to David Bremner for general tidyups. Thanks to Nabil Redmann for suggesting redirecting hooks' output. Thanks to Bader Aldurai for suggesting the process tree. Thanks to Christian Long for suggesting virtual accounts. Thanks to Marcin Lewandowski for spotting a bug appending to large files. Thanks to Nicolas Ducrocq for suggesting timestamping redirected output. Thanks to Meang Akira Tanaka for suggestion and initial implementation of the statuscode command. Thanks to Kirill Kovalenko for reporting a crash with NANO server. Thanks to Connor Reynolds for spotting a potential buffer overflow. Thanks to foi for spotting a hang with 64 cores.
NSSM is public domain. You may unconditionally use it and/or its source code for any purpose you wish.