Есть ли инструмент, который может управлять демонами / сервисами кросс-платформенным способом?

В программировании существуют различные инструменты для сборки, которые позволяют создавать программное обеспечение из исходного кода на разных платформах; инструмент позаботится о том, чтобы определить возможности конкретного компьютера и найти библиотеки, компиляторы и т. д. Например, CMake.

Есть похожая проблема с управлением демоном. В зависимости от операционной системы, если я хочу запустить демон, я могу использовать

stop-start-daemon -S mydaemon

или, возможно, назвать сценарий, как

/etc/init.d/mydaemon start

или если systemctl является инструментом выбора, то

systemctl start mydaemon

И если я на Windows, то я мог бы использовать либо net start myservice либо sc start myservice .

Есть ли инструмент, сценарий или другой канонический метод для обработки этого сценария? Мне не нужен мелкозернистый контроль; просто остановитесь и начните, но я хотел бы иметь возможность развернуть свое собственное программное обеспечение на нескольких системах, используя один и тот же сценарий.

2 ответа2

3

Чтобы прямо ответить на ваш вопрос: нет, нет кроссплатформенного способа запуска / остановки / управления демонами.

Чтобы косвенно ответить на ваш вопрос: типичным способом решения этой проблемы является включение такого рода функциональности в вашу программу и установщики (makefiles/build files/msi packages/zips и т.д.).

Если у меня есть демонизированная программа, которую я создаю (программа, предназначенная для запуска в фоновом режиме или в качестве службы), я создаю сценарии запуска / остановки вручную (с некоторыми полезными копированием / вставкой), а затем выполняю zip-архивирование. или исходный код, или предварительно скомпилированный двоичный файл с помощью сценария управления платформой выбора, который затем вызывается одинаково для каждой платформы (т.е. myservice -start или myservice -stop и т. д. и т. д.).

0

Я сам нуждался в этом для своих программных продуктов и решил написать:

https://github.com/cubiclesoft/service-manager/

Это не совсем безупречное решение, поскольку каждая платформа нуждается в собственном предварительно скомпилированном двоичном файле. Тем не менее, интерфейс намного более последовательный, чем у нас на данный момент. Service Manager, вероятно, лучше всего использовать в качестве кроссплатформенного инструмента развертывания служб, который отвечает вашим последним потребностям в развертывании собственного программного обеспечения, а не в качестве общего инструмента запуска / остановки. То есть вы пишете некоторый код, который хотите превратить в системный сервис, и делаете его простым и надежным для развертывания на других машинах независимо от ОС.

Однако его также можно использовать для запуска / остановки других служб с поддержкой Service Manager. Таким образом, пока все службы, которыми вы хотите управлять, работают под управлением Service Manager, вы можете использовать один инструмент для запуска и остановки этих служб.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .