0

我有使用 installAnywhere 注册 windows NT 服务的注册 windows 服务操作。

我希望与 LINUX 相同。我想在 Linux 环境中注册服务,但找不到相关操作。

使用 installAnywhere 在 Linux 中注册服务有什么想法吗?

4

1 回答 1

0

在 Unix / Linux 世界中,最接近“标准”启动过程的是AT&T System V init (Wikipedia) 方法。这个“标准”是多年前在 AT&T 的 System V 上创建的,然后它的变体在最常见的 Unix 和 Linux 变体中实现。

这种方法涉及根据运行级别在/etc目录下创建链接。一些发行版对此采取的方法与最初的 AT&T System V 方法略有不同(参见上面引用的文章)。

在过去的几年里,这已成为一个更棘手的提议。Unix 和 Linux 发行版有一种放弃 SysV init 的趋势,转而采用新的方法来解决 SysV init 方式的一些缺点(再次参见上面引用的文章)。

在 InstallAnywhere 中,没有预设的“创建 Unix 系统服务”操作。因此,安装工程师自己动手。如果您只针对一个 Unix/Linux 平台,则相对容易:编写和安装脚本和配置文件,并创建链接,以满足您的发行版的标准方法(例如,systemd、Upstart、launchd、SMF 等) . 对我们来说,我们在嵌入在执行批处理或外壳脚本操作中的脚本中完成大部分工作。

如果您的目标是不同的平台,那么您需要在安装时确定您当前运行的平台,在某些情况下,确定平台的版本。之后,您需要为当前平台执行正确的安装步骤。

我们通过创建组操作来做到这一点,应用特定于平台的规则,封装我们支持的平台所需的步骤。在最后的努力中,我们默认使用“标准”AT&T SysV 方法,安装脚本并创建使我们的应用程序能够以我们支持的运行级别启动所需的链接。

与此主题相关的还有减轻创建 Unix/Linux 系统服务负担的框架的使用。其中包括:Java Service WrapperYet another Java Service WrapperApache Commons Daemon,以及其他人。我建议您让脚本在 InstallAnywhere 之外运行和测试,然后创建安装期间配置系统服务所需的 InstallAnywhere 组操作和执行批处理或 Shell 脚本操作。这是一个乏味的过程,但是让每个平台在 InstallAnywhere 之外工作,然后在 InstallAnywhere 内部实现该平台,从长远来看可以节省您的时间。从好的方面来说,一旦你配置并工作,你不应该在一段时间内更改安装程序的这一部分。

我们正在考虑但尚未转向的另一种方法是使用单个顶级脚本来为我们完成繁重的工作。我们将采用与平台名称相关的标准命名约定和目录结构。在安装期间,我们为所有支持的平台复制安装脚本的整个目录结构。该结构的顶部是一个脚本,它知道如何嗅探当前平台并为该平台执行正确的脚本。如果用户选择启用我们的应用程序作为系统服务,我们将在安装期间执行这个脚本。在安装结束时,我们将删除安装脚本目录。

这将降低我们安装程序的复杂性,并允许我们在不更改安装程序的情况下添加对更多平台的支持。如果您支持多个平台,您可能希望从这种方法开始。如果您希望将来添加对更多平台的支持,从长远来看,它可能会节省您的时间。

于 2013-10-28T18:19:34.267 回答