Solaris SMF
From Lolly's Wiki
Running foreground processes
<?xml version='1.0'?> <!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'> <service_bundle type='manifest' name='export'> <service name='network/foreground-daemon' type='service' version='0'> <single_instance/> <dependency name='filesystem_minimal' grouping='require_all' restart_on='none' type='service'> <service_fmri value='svc:/system/filesystem/local'/> </dependency> <dependency name='loopback' grouping='require_any' restart_on='error' type='service'> <service_fmri value='svc:/network/loopback'/> </dependency> <dependency name='network' grouping='optional_all' restart_on='error' type='service'> <service_fmri value='svc:/milestone/network'/> </dependency> <instance name='default' enabled='true'> <exec_method name='refresh' type='method' exec=':true' timeout_seconds='60'/> <exec_method name='stop' type='method' exec=':kill' timeout_seconds='60'/> <exec_method name='start' type='method' exec='/opt/foreground/bin/foreground-daemon %m' timeout_seconds='0'> <method_context project='foreground-project' > <method_credential user='foreground-user' group='noaccess' /> </method_context> </exec_method> <property_group type="framework" name="startd"> <propval type="astring" name="duration" value="child"/> </property_group> <template> <common_name> <loctext xml:lang='C'>Foreground Daemon</loctext> </common_name> <documentation> <manpage title='foreground-daemon' section='1M' manpath='/opt/foreground/man'/> </documentation> </template> </instance> <stability value='Unstable'/> </service> </service_bundle>
Adding dependency on another service
For example mount NFS after ZFS:
svccfg -s svc:/network/nfs/client addpg filesystem-local dependency
svccfg -s svc:/network/nfs/client setprop filesystem-local/grouping = astring: require_all
svccfg -s svc:/network/nfs/client setprop filesystem-local/entities = fmri: svc:/system/filesystem/local:default
svccfg -s svc:/network/nfs/client setprop filesystem-local/restart_on = astring: none
svccfg -s svc:/network/nfs/client setprop filesystem-local/type = astring: service