Кроссплатформенный демон / сервис остановка и запуск
862
Anthony
Есть ли инструмент, который может управлять демонами / сервисами кросс-платформенным способом?
В программировании существуют различные инструменты для сборки, которые позволяют создавать программное обеспечение из исходного кода на разных платформах; инструмент позаботится о том, чтобы определить возможности конкретного компьютера и найти библиотеки, компиляторы и т. д. Например, CMake.
Есть похожая проблема с управлением демоном. В зависимости от операционной системы, если я хочу запустить демон, я могу использовать
stop-start-daemon -S mydaemon
или, возможно, назвать сценарий, как
/etc/init.d/mydaemon start
или если systemctlэто инструмент выбора, то
systemctl start mydaemon
И если я на Windows, то я мог бы использовать либо net start myserviceили sc start myservice.
Есть ли инструмент, сценарий или другой канонический метод для обработки этого сценария? Мне не нужен мелкозернистый контроль; просто остановитесь и начните, но я хотел бы иметь возможность развернуть свое собственное программное обеспечение на нескольких системах, используя один и тот же сценарий.
у вас есть различия, может быть, я могу что-то написать
Felipe Alcacibar 10 лет назад
0
2 ответа на вопрос
3
txtechhelp
To directly answer your question: no, there is not a cross platform way to start/stop/control daemons.
To indirectly answer your question: the typical way this is handled is by baking that kind of functionality into your program and installers (makefiles/build files/msi packages/zips whatever).
If I have a daemonized program that I am building (a program that is intended to run in the background or as a service), I build out the 'start/stop' scripts by hand (with some helpful copy/paste) and then zip up either the source or precompiled binary with the platform of choices control script that is then called the same way across each platform (i.e. myservice -start or myservice -stop, etc. etc.).
0
CubicleSoft
Я сам нуждался в этом для своих программных продуктов и решил написать:
Это не совсем безупречное решение, поскольку каждая платформа нуждается в собственном предварительно скомпилированном двоичном файле. Тем не менее, интерфейс намного более последовательный, чем у нас на данный момент. Service Manager, вероятно, лучше всего использовать в качестве кроссплатформенного инструмента развертывания служб, который отвечает вашим последним потребностям в развертывании собственного программного обеспечения, а не в качестве общего инструмента запуска / остановки. То есть вы пишете некоторый код, который хотите превратить в системный сервис, и делаете его простым и надежным для развертывания на других машинах независимо от ОС.
Однако его также можно использовать для запуска / остановки других служб с поддержкой Service Manager. Таким образом, пока все службы, которыми вы хотите управлять, работают под управлением Service Manager, вы можете использовать один инструмент для запуска и остановки этих служб.