如何编写与
一起使用的可移植init脚本其他平台(Windows,Android,OS-X)在我的上下文中并不重要。
答案 0 :(得分:2)
systemd和upstart
都支持sysinit
样式脚本。 RHEL 6使用upstart,但大多数脚本都是普通的init.d
bash脚本。 RHEL 7和Fedora 19(及更早版本)使用systemd
,但他们很乐意运行旧的init脚本。
您可以使用使用init脚本分叉的普通旧式守护程序。如果应用程序不自行分叉,您可以使用supervisord之类的东西为您执行分叉,并直接与单独的systemd脚本集成。我不知道upstart
的细节,除了它使用它自己的格式,但支持它(如果你不必支持旧的/当前的Linux系统)似乎只适用于非Linux发行版。 systemd
目前是特定于Linux的,但我已经看到正在完成将其移植到BSD的工作。
您可能对他们如何整合CUPS感兴趣。上次我检查systemd
“脚本”时使用-f
选项(前景) - ExecStart=/usr/sbin/cupsd -f
启动守护程序。 init.d
脚本不会添加该标志。
简而言之 - 现在使用旧式System V
init.d
脚本,如果您想要一个适用于所有地方的解决方案。如果您有一些备用资源,请添加systemd
支持,如果您有足够的资源,您当然可以单独支持这三个系统(对用户来说是最大的好处,但需要做很多工作)。
我个人创建init.d
+ systemd脚本,不关心暴发户。有可能systemd
will soon replace upstart(also look here)和init.d
脚本仍然可用于其他UNIX-es。
答案 1 :(得分:1)
据我所知systemd
允许运行init.d
个脚本,因此您可以使用upstart
和init.d
执行可移植的脚本。
另一件事是所有这些(systemd
,init.d
,upstart
)都使用自己的语法。我看到的唯一解决方案是创建三个不同的脚本,调用最常见服务接口的一些应用程序 - 分叉服务应用程序。这样,所有经理都会知道如何处理您的服务。并为您的应用程序提供所有三种脚本。然后,安装程序必须选择要与服务应用程序一起安装的脚本。