Starten eines Dienstes während des Startvorgangs

7

Ich habe einen Dienst für eine Anwendung erstellt und möchte, dass diese Anwendung beim Booten gestartet wird. Im Service-Manifest stelle ich fest, dass es dafür eine Eigenschaft gibt (enabled = "true"), aber ich habe dies aus einem besonders ärgerlichen Aspekt vermieden:

Der Import ist Teil eines Skripts. Wenn der Dienst als "aktiviert" aktiviert ist, wird er beim Import neu gestartet. Das Problem ist, dass ich nicht sicher bin, wie ich warten soll, bis der Prozess aktiviert ist, bevor ich fortfahre. Also, was ich im Skript mache, ist mit importiertem Set als "false" zu importieren und dann "svcadm enable -s <service>" auszuführen .

Also habe ich mich gefragt, ob jemand Antworten auf eine dieser Fragen hat:

  1. Wie kann ein vorhandener Dienst beim Booten gestartet werden (hoffentlich werden manuelle Ergänzungen zu rc3.d vermieden)?
  2. Wie lässt du den svccfg-Import warten, bis ein Dienst vollständig aktiviert ist, bevor du fortfährst?
  3. Gibt es eine elegante Möglichkeit, zu warten, bis ein Dienst gestartet wird, bevor Sie fortfahren (ohne manuelles Greifen nach aktiviert in einer Schleife zu vermeiden)?

Vielen Dank.

julianisch
quelle
Können Sie Frage 2 klären? Ich habe mehrere Dienste erstellt, die standardmäßig aktiviert sind, und es scheint gut zu funktionieren.
Bahamat

Antworten:

0

Ich werde versuchen, Ihre Fragen zu Solaris SMF zu beantworten ...

  1. Um einen Dienst beim Booten zu starten, müssen Sie den Dienst einfach mit aktivieren

    # svcadm enable FRMI
    

    Um beispielsweise den Dienst "ipfilter" zu aktivieren, müssen Sie ihn erstellen

    # svcadm enable ipfilter
    

    Dies wird für den aktuellen Meilenstein aktiviert, sodass keine Änderungen am /etc/rcX.dVerzeichnis vorgenommen werden müssen

  2. Ich verstehe nicht, warum Sie den Importvorgang benötigen, um auf ein anderes frmi zu warten, aber ich importiere normalerweise das "Manifest" und stelle es danach svcadmzum Beispiel online

    # svccfg validate MANIFEST
    # svcadm enable FRMI
    
  3. Um andere frmi abzuwarten, können Sie die Option "Abhängigkeit" im Manifest verwenden, wie Sie hier sehen können

    <dependency
        name='filesystem-local'
        grouping='require_all'
        restart_on='none'
        type='service'>
        <service_fmri value='svc:/system/filesystem/local:default' />
    </dependency>
    

Ich habe viele Beispiele für die Installation und Verwendung von Solaris SMF in meinem Blog (auf Spanisch), aber hier sehen Sie beispielsweise ein Beispiel für die Installation von PostgreSQL 9.0.3 unter OpenIndiana oder die Installation von Apache Tomcat mit RBAC und SMF auf OpenIndiana

itilys
quelle
0

Vielleicht können Sie dies lösen, indem Sie Ihren Dienst von einem anderen Dienst abhängig machen, der noch nicht aktiviert ist.

jlliagre
quelle
Danke für den Vorschlag. Leider bin ich mit dieser speziellen Problemumgehung nicht wirklich zufrieden. Ich schätze die Antwort sehr.
Julian