在启动期间启动服务

jul*_*ian 7 solaris services

我为一个应用程序创建了一个服务,我希望这个应用程序在启动时启动。在服务清单中,我意识到有一个属性 (enabled="true"),但我一直在避免使用它,因为它有一个特别烦人的方面:

导入是脚本的一部分。将服务设为“已启用”意味着它将在导入时重新启动。问题是我不确定如何等到进程启用后再继续。所以,我在脚本中做的是导入,启用设置为“false”,然后运行“svcadm enable -s <service>”。

所以我想知道是否有人对以下任何一个问题有任何答案:

  1. 如何在启动时启动现有服务(希望避免手动添加到 rc3.d)?
  2. 如何让 svccfg import 等到服务完全启用后再继续?
  3. 有没有一种优雅的方法可以等到服务启动后再继续(避免在循环中手动搜索启用)?

谢谢。

小智 0

我将尝试回答您有关 Solaris SMF 的问题...

  1. 要在启动时启动服务,您必须简单地启用该服务

    # svcadm enable FRMI
    
    Run Code Online (Sandbox Code Playgroud)

    例如,要启用服务“ipfilter”,您需要

    # svcadm enable ipfilter
    
    Run Code Online (Sandbox Code Playgroud)

    这将在当前里程碑上启用,因此无需对/etc/rcX.d目录进行任何更改

  2. 我不明白为什么你需要导入过程来等待其他一些 frmi,但是,我通常导入“清单”,然后将其放在网上 svcadm,例如

    # svccfg validate MANIFEST
    # svcadm enable FRMI
    
    Run Code Online (Sandbox Code Playgroud)
  3. 要等待其他 frmi,您可以使用清单中的“依赖项”选项,如下所示

    <dependency
        name='filesystem-local'
        grouping='require_all'
        restart_on='none'
        type='service'>
        <service_fmri value='svc:/system/filesystem/local:default' />
    </dependency>
    
    Run Code Online (Sandbox Code Playgroud)

我在我的博客(西班牙语)中提供了许多有关如何安装和使用 Solaris SMF 的示例,但是,例如,您可以在此处看到一个示例, How to Install PostgreSQL 9.0.3 on OpenIndianaHow to Install Apache Tomcat using RBAC 以及OpenIndiana 上的 SMF