
私はアプリケーションのサービスを作成しましたが、起動時にアプリケーションを起動したいと思います。サービスマニフェストに属性(enabled = "true")があることがわかりましたが、特に迷惑なこの側面は避けました。
インポートはスクリプトの一部です。サービスを「有効」に設定すると、インポート時に再開されます。問題は、続行する前にプロセスがアクティブになるのを待つ方法がわからないことです。だから私がスクリプトで行ったことは、アクティベーションを "false"に設定してから "svcadmアクティベーション-s <service>
"を実行することでした。
だから、次の質問に対する答えを持っている人がいるかどうか疑問に思います。
- 起動時に既存のサービスを開始するにはどうすればよいですか? (rc3.dに手動で追加するのを防ぐことができます。)
- 続行する前に、サービスが完全にアクティブになるまでsvccfgのインポートを待機させるにはどうすればよいですか?
- 続行する前にサービスが開始されるのを待つエレガントな方法はありますか(ループで手動でアクティブにすることを避けます)。
ありがとうございます。
答え1
Solaris SMFに関するご質問にお答えします。
起動時にサービスを開始するには、サービスを有効にするだけです。
# svcadm enable FRMI
たとえば、「ipfilter」サービスを有効にするには、次のものが必要です。
# svcadm enable ipfilter
これは現在マイルストーンで有効になっているため、
/etc/rcX.d
ディレクトリを変更する必要はありません。他のfrmiを待つためにインポートプロセスが必要な理由を理解できません。ただし、通常は「マニフェスト」をインポートしてからオンラインにします
svcadm
。# svccfg validate MANIFEST # svcadm enable FRMI
別のfrmiを待つには、次のようにマニフェストで「依存関係」オプションを使用できます。
<dependency name='filesystem-local' grouping='require_all' restart_on='none' type='service'> <service_fmri value='svc:/system/filesystem/local:default' /> </dependency>
私のブログ(スペイン語)には、Solaris SMFをインストールして使用する方法の多くの例があります。たとえば、ここで例を見ることができます。 OpenIndianaにPostgreSQL 9.0.3をインストールする方法またはRBACとSMFを使用してOpenIndianaにApache Tomcatをインストールする方法
答え2
まだアクティブでない他のサービスにサービスを依存させることで、この問題を解決することもできます。