| How To Add A Service In SMF |
|
|
|
| How To - Solaris | |||
| Written by Christian Foronda | |||
| Tuesday, 09 November 2010 15:29 | |||
|
Create appropriate directories and start/stop script: # mkdir /var/svc/manifest/network/ServiceName # vi /var/svc/manifest/network/ServiceName/myservice.xml Note: Create an appropriate named XML file. Also have a browse of the directories - if your service is not a network service obviously do not put it under the network directory. Sample XML based on Kannel: <?xml version="1.0"?> <!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1"> <!-- Copyright 2007 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. #ident "@(#)kannel.xml 1.1 07/05/23 SMI" --> <service_bundle type='manifest' name='SUNWkannel:gateway'> <service name='network/kannel' type='service' version='1'> <create_default_instance enabled='false' /> <single_instance/> <dependency name='net-loopback' grouping='require_any' restart_on='none' type='service'> <service_fmri value='svc:/network/loopback' /> </dependency> <dependency name='net-service' grouping='require_all' restart_on='none' type='service'> <service_fmri value='svc:/network/service'/> </dependency> <dependency name='net-physical' grouping='require_all' restart_on='none' type='service'> <service_fmri value='svc:/network/physical' /> </dependency> <dependency name='filesystem-local' grouping='require_all' restart_on='none' type='service'> restart_on='none' type='service'> <service_fmri value='svc:/system/filesystem/local' /> </dependency> <exec_method type='method' name='start' exec='/lib/svc/method/kannel start' timeout_seconds='170' /> <exec_method type='method' name='stop' exec='/lib/svc/method/kannel stop' timeout_seconds='60' /> <stability value='Unstable' /> </service> </service_bundle> You can create your own custom XML using this tool http://sgpit.com/smf/ Create the control script that will exec method calls: # vi /lib/svc/method/myservice #!/sbin/sh
case $1 in
'start')
/usr/local/bin/name_of_executable
;;
'stop')
/usr/bin/pkill -x -u 0 name_of_executable
;;
*)
echo "Usage: $0 { start | stop }"
exit 1
;;
esac
exit 0
You have to change your SMF control script to call your script in the exec method: # vi /var/svc/manifest/network/ServiceName/myservice.xml <exec_method type='method' name='start' exec='/usr/local/bin/name_of_executable start' timeout_seconds='170' /> <exec_method type='method' name='stop' exec='/usr/local/bin/name_of_executable stop' timeout_seconds='60' /> Validate your XML document: # xmllint --valid /var/svc/manifest/network/ServiceName/myservice.xml # svccfg validate /var/svc/manifest/network/ServiceName/myservice.xml Import it to SMF: # svccfg import /var/svc/manifest/network/ServiceName/myservice.xml Verify in SMF. It should be now visible under SMF: # svcs ServiceName STATE STIME FMRI offline 14:26:06 svc:/network/ServiceName:default Enable the service: # svcadm enable ServiceName Reference: Similar articles
|
|||
| Last Updated on Tuesday, 09 November 2010 15:31 |


