我使用installAnywhere的注册windows NT服务操作注册windows NT服务。
我希望在LINUX上也是这样。我想在Linux环境中注册服务,但找不到有关的操作。
有没有使用installAnywhere在Linux中注册服务的想法?
发布于 2013-10-29 02:19:34
在Unix / Linux世界中,最接近“标准”启动过程的是AT&T System V init (维基百科)方法。这个“标准”是很多年前在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等)。对我们来说,大部分工作都是在嵌入在Execute Batch或Shell脚本操作中的脚本中完成的。
如果您针对的是不同的平台,则需要在安装时确定当前运行的平台,以及在某些情况下运行的平台版本。之后,您需要为当前平台执行正确的安装步骤。
我们通过创建应用了特定于平台的规则的组操作来做到这一点,这些操作封装了我们所支持的平台所需的步骤。在最后的努力中,我们默认使用“标准的”AT&T SysV方法,安装脚本并创建所需的链接,以使我们的应用程序能够在我们支持的运行级别中启动。
与此主题相关的还有使用框架来减轻创建Unix/Linux系统服务的负担。其中包括:Java Service Wrapper、Yet Another Java Service Wrapper、Apache Commons Daemon以及其他。我建议您在InstallAnywhere之外运行并测试脚本,然后创建InstallAnywhere组操作,并在安装期间执行配置系统服务所需的批处理或外壳脚本操作。这是一个单调乏味的过程,但从长远来看,让每个平台在InstallAnywhere之外工作,然后在InstallAnywhere内部实现该平台将节省您的时间。从好的方面来说,一旦你配置好并运行了它,你应该在一段时间内不需要改变安装程序的这一部分。
我们正在考虑的另一种方法是使用单个顶层脚本来为我们完成繁重的任务,但尚未转向。我们将采用标准的命名约定和绑定到平台名称的目录结构。在安装过程中,我们为所有支持的平台复制安装脚本的整个目录结构。在该结构的顶部是一个脚本,它知道如何嗅探当前平台并为该平台执行适当的脚本。如果用户选择将我们的应用程序作为系统服务启用,我们将在安装期间执行这一脚本。在安装结束时,我们将删除安装脚本目录。
这将降低安装程序的复杂性,并允许我们在不更改安装程序的情况下添加对更多平台的支持。如果您支持多个平台,您可能希望从这种方法开始。如果您希望在未来添加对更多平台的支持,从长远来看,这可能会节省您的时间。
https://stackoverflow.com/questions/19507574
复制相似问题