Я ищу программное обеспечение для управления службами, подобное Linux systemctl, для Windows.

Вопрос или проблема

Я ищу бесплатное программное обеспечение для Windows с следующими требованиями. В идеале я ищу функциональность, эквивалентную systemctl в Linux.

Стандартные службы Windows не смогли удовлетворить мои потребности.

  • Возможность регистрировать произвольные команды, такие как exe и py файлы.
  • Должно быть возможно запускать программу CLI в фоновом режиме.
  • Стандартный вывод и стандартный вывод ошибок должны записываться в текстовый файл с отметкой времени, чтобы их можно было проверить позже.
  • Когда программа CLI завершается аномально, она автоматически перезапускается.
  • Окно CMD не должно отображаться при выполнении программы CLI.
  • Зарегистрированные программы можно перечислить. Должно также отображаться количество раз, когда программа была перезапущена после аномального завершения.
  • Не нужно вносить изменения в программу CLI.
  • Бесплатно и без ограничений по функциям.

Я ищу бесплатное программное обеспечение.

Устроенная служба Windows не имеет возможности сохранять стандартный вывод в текстовый файл. Также программа, которую необходимо зарегистрировать, должна быть .exe, и к .exe необходимо добавить специфическую для службы логику.

Я собирался использовать systemctl в WSL2, но WSL2 останавливает systemctl через минуту или около того, когда я закрываю терминал.

Вы можете попробовать NSSM. Это бесплатно и с открытым исходным кодом.

  • Вы можете использовать его для регистрации любого исполняемого файла (например, .exe или .py) в качестве службы Windows.
  • Он позволяет запускать программы CLI в фоновом режиме в качестве служб Windows.
  • Он перенаправляет как стандартный вывод, так и стандартный вывод ошибок в файлы, и вы можете указывать имена файлов с отметками времени.
  • Возможно настроить автоматический перезапуск при сбое.
  • Он может запускать программы без отображения окна командной строки.
  • Он предоставляет команды для перечисления всех зарегистрированных служб и их свойств, включая количество перезапусков после аномального завершения.
  • Если вы хотите избежать внесения изменений в саму программу CLI, вы можете обернуть программу CLI с помощью скрипта или bat-файла.

Создайте файл wrapper.bat следующим образом:

@echo off
setlocal

set LOG_DIR=C:\Path\To\Logs

mkdir "%LOG_DIR%" 2>nul

:run_program
"%~dp0\YourCLIProgram.exe" >> "%LOG_DIR%\output.log" 2>> "%LOG_DIR%\error.log"
echo Программа завершилась аномально. Перезапускаю...
goto run_program

Затем в NSSM:

nssm install MyService "C:\Path\To\wrapper.bat"
nssm set MyService AppDirectory "C:\Path\To\Directory\Containing\Batch\File"
nssm start MyService

Ответ или решение

Для решения вашей задачи по поиску программного обеспечения для управления службами в Windows, которое напоминает функциональность Linux systemctl, я рекомендую обратить внимание на NSSM (Non-Sucking Service Manager). NSSM — это бесплатное и открытое программное обеспечение, которое отвечает всем вашим требованиям. Вот подробное описание его основных функций и шаги по установке.

Возможности NSSM

  1. Регистрация произвольных команд: NSSM позволяет регистрировать любые исполняемые файлы (.exe, .py) в качестве служб Windows. Это значит, что вы можете использовать как стандартные приложения, так и свои собственные CLI-скрипты.

  2. Запуск в фоновом режиме: В отличие от стандартного сервиса Windows, NSSM запускает вашу программу как фоновый процесс, что избавляет от необходимости открывать CMD окно.

  3. Перенаправление вывода: NSSM позволяет перенаправлять стандартный вывод и ошибки в текстовые файлы с добавлением временных меток. Можно настроить конкретные имена файлов для логирования, что облегчает последующий анализ.

  4. Автоматический перезапуск: В случае ненормального завершения вашей программы, NSSM может автоматически перезапустить её, что является критически важной функцией для обеспечения устойчивости.

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

  6. Без изменений в CLI программе: Не требуется вносить изменения в саму CLI-программу. Вы можете обернуть её в скрипт или пакетный файл.

  7. Бесплатное использование: NSSM полностью бесплатен и не имеет ограничений по функциям, что делает его идеальным решением для индивидуальных разработчиков и малых предприятий.

Установка NSSM

Вот пошаговая инструкция, как установить и настроить NSSM для работы с вашей программой:

  1. Скачивание NSSM: Перейдите на официальный сайт NSSM и скачайте последнюю версию. Распакуйте архив в удобное для вас место.

  2. Создание оболочки (обертки): Напишите файл wrapper.bat для вашей программы, чтобы управлять её выполнением и логированием. Пример содержимого файла:

    @echo off
    setlocal
    
    set LOG_DIR=C:\Path\To\Logs
    
    mkdir "%LOG_DIR%" 2>nul
    
    :run_program
    "%~dp0\YourCLIProgram.exe" >> "%LOG_DIR%\output.log" 2>> "%LOG_DIR%\error.log"
    echo Программа завершилась аномально. Перезапуск...
    goto run_program
  3. Регистрация службы NSSM: Откройте командную строку (CMD) с правами администратора и выполните следующие команды:

    nssm install MyService "C:\Path\To\wrapper.bat"
    nssm set MyService AppDirectory "C:\Path\To\Directory\Containing\Batch\File"
    nssm start MyService

    Здесь MyService — это имя вашей новой службы, а путь указывает на расположение вашего wrapper.bat и самого CLI-приложения.

  4. Управление службой: Вы можете управлять вашей службой с помощью NSSM. Например, для получения информации о службе:

    nssm status MyService

    Для остановки или перезапуска:

    nssm stop MyService
    nssm restart MyService

Заключение

Использование NSSM обеспечит вам мощный и надежный инструмент для управления службами Windows, который наделен всеми необходимыми функциями, аналогичными systemctl в Linux. Это решение прекрасно вписывается в ваш запрос на бесплатное и функциональное программное обеспечение. NSSM поможет вам эффективно контролировать запуск программ, обрабатывать их логи и поддерживать стабильность работы системы.

Если у вас появятся дополнительные вопросы или потребуется помощь в настройке, не стесняйтесь обращаться.

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

Капча загружается...