svcbundle is an really useful tool to create SMF manifestes without having to hassle too much with XML. Most often you don’t have to work with XML at all , but there were some gaps where you wasn’t able to use some options that SMF offers with non-edited manifest generated by svcbundle because the -s option simply did not support this parameter. svcbundle was simply never thought as full subsitite for vi and some knowledge to every thinkable usecase of a SMF manifest.

Solaris 11 SRU 27 closed some of the gaps. You can now define a jitter and delay for an periodic service. I will write a blog entry about those options later.

However you can now define a timeout value for the methods. This blog entry is about this addition. Per default it would use a timeout of 60 second, but with the -s timeout= you can set it for all methods to a value of your preference. When using -s timeout the timeout is the same for all methods. This was one of the parts which i most often edited manually after working with svcbundle. The other one will be addressed by a blog entry in a few days.

# svcbundle -s service-name=site/narf \
 -s start-method="/lib/svc/method/narf %m" \
 -s stop-method="/lib/svc/method/narf %m" \
 -s refresh-method="/lib/svc/method/narf %m" \ 
 -s model=daemon -s timeout=30
 [...]
        <exec_method name="start" type="method" timeout_seconds="30"
            exec="/lib/svc/method/narf %m"/>
        <exec_method name="stop" type="method" timeout_seconds="30"
            exec="/lib/svc/method/narf %m"/>
        <exec_method name="refresh" type="method" timeout_seconds="30"
            exec="/lib/svc/method/narf %m"/>

However sometimes you just want to set a certain timeout for one of your methods, for example because the start script takes longer, you want a timeout longer than the refresh timout which may be just a SIGHUP to a process. You can now specify method specific timeouts via svcbundle via -s start-timeout=, -s stop-timeout= and -s refresh-timeout=

# svcbundle -s service-name=site/narf \
 -s start-method="/lib/svc/method/narf %m" \
 -s stop-method="/lib/svc/method/narf %m" \
 -s refresh-method="/lib/svc/method/narf %m"  \ 
 -s model=daemon \
 -s start-timeout=30 -s stop-timeout=20 -s refresh-timeout=10
[...]
        <exec_method name="start" type="method" timeout_seconds="30"
            exec="/lib/svc/method/narf %m"/>
        <exec_method name="stop" type="method" timeout_seconds="20"
            exec="/lib/svc/method/narf %m"/>
        <exec_method name="refresh" type="method" timeout_seconds="10"
            exec="/lib/svc/method/narf %m"/>
Written by

Joerg Moellenkamp

Grey-haired, sometimes grey-bearded Windows dismissing Unix guy.