Le manifeste de service généré à l'aide de la commande svcbundle peut vous suffire sans modification nécessaire. L'exemple suivant montre une modification du manifeste de service.
Si vous modifiez un manifeste de service, la commande svccfg validate permet d'assurer que le manifeste est toujours valide.
Exemple 13-4 Manifeste de service personnalisé : augmenter le temps autorisé pour le script à exécuterDans la copie suivante du manifeste de service généré, le délai d'attente de 60 secondes exec_method par défaut a été augmenté pour la méthode start. Assurez-vous que la méthode start dispose du temps adéquat pour exécuter le script de première initialisation.
<?xml version="1.0" ?> <!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'> <!-- Manifest created by svcbundle (2014-Jan-14 16:39:30-0700) --> <service_bundle type="manifest" name="site/first-boot-script-svc"> <service version="1" type="service" name="site/first-boot-script-svc"> <!-- The following dependency keeps us from starting until the multi-user milestone is reached. --> <dependency restart_on="none" type="service" name="multi_user_dependency" grouping="require_all"> <service_fmri value="svc:/milestone/multi-user"/> </dependency> <!-- Make sure the start method has adequate time to run the script. --> <exec_method timeout_seconds="360" type="method" name="start" exec="/opt/site/first-boot-script.sh"/> <!-- The exec attribute below can be changed to a command that SMF should execute to stop the service. See smf_method(5) for more details. --> <exec_method timeout_seconds="60" type="method" name="stop" exec=":true"/> <!-- The exec attribute below can be changed to a command that SMF should execute when the service is refreshed. Services are typically refreshed when their properties are changed in the SMF repository. See smf_method(5) for more details. It is common to retain the value of :true which means that SMF will take no action when the service is refreshed. Alternatively, you may wish to provide a method to reread the SMF repository and act on any configuration changes. --> <exec_method timeout_seconds="60" type="method" name="refresh" exec=":true"/> <property_group type="framework" name="startd"> <propval type="astring" name="duration" value="transient"/> </property_group> <instance enabled="true" name="default"> <property_group type="application" name="config"> <propval type="boolean" name="completed" value="false"/> </property_group> </instance> <template> <common_name> <loctext xml:lang="C"> <!-- Replace this comment with a short name for the service. --> </loctext> </common_name> <description> <loctext xml:lang="C"> <!-- Replace this comment with a brief description of the service --> </loctext> </description> </template> </service> </service_bundle>
$ svccfg validate first-boot-script-svc-manifest.xmlExemple 13-5 Manifeste de service personnalisé : vérifier l'exécution du script une fois les zones non globales installées
Dans l'extrait du manifeste de service suivant, la dépendance sur svc:/milestone/multi-user passe à une dépendance sur svc:/system/zones-install pour vous assurer que le script de première initialisation s'exécute une fois toutes les zones non globales installées.
<!-- The following dependency keeps us from starting until all non-global zones are installed. --> <dependency restart_on="none" type="service" name="ngz_dependency" grouping="require_all"> <service_fmri value="svc:/system/zones-install"/> </dependency>