Solaris SMF

From Lolly's Wiki
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.


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

Setting multiple parameters to environment variables

1. The goal:

  • Setting -Xmx from 512m to 2G

The problem:

# svccfg -s svc:/cms/web:tomcat setenv -m start CATALINA_OPTS '-XX:MaxPermSize=256m -Xmx2G -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9004 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dorg.apache.el.parser.SKIP_IDENTIFIER_CHECK=true -Djava.rmi.server.hostname=tomcat.server.de'
svccfg: Syntax error.

So you have to set the complete environment this way:

  • Get the complete environment:
# svccfg -s svc:/cms/web:tomcat listprop method_context/environment
method_context/environment  astring  "PATH=/usr/jdk/latest/bin:/usr/sbin:/usr/bin" "LC_CTYPE=de_DE.ISO8859-15@euro" "JAVA_OPTS=-Dhttp.proxyHost=proxy.server.de -Dhttp.proxyPort=8080 -Djava.awt.headless=true" "JAVA_HOME=/usr/jdk/latest" "CATALINA_OPTS=-XX:MaxPermSize=256m -Xmx512m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9004 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dorg.apache.el.parser.SKIP_IDENTIFIER_CHECK=true -Djava.rmi.server.hostname=tomcat.server.de"
  • Set the complete (modified) environment:
# svccfg -s svc:/cms/web:tomcat setprop method_context/environment = astring: '("PATH=/usr/jdk/latest/bin:/usr/sbin:/usr/bin" "LC_CTYPE=de_DE.ISO8859-15@euro" "JAVA_OPTS=-Dhttp.proxyHost=proxy.server.de -Dhttp.proxyPort=8080 -Djava.awt.headless=true" "JAVA_HOME=/usr/jdk/latest" "CATALINA_OPTS=-XX:MaxPermSize=256m -Xmx2G -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9004 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dorg.apache.el.parser.SKIP_IDENTIFIER_CHECK=true -Djava.rmi.server.hostname=tomcat.server.de")'
# svcadm refresh svc:/cms/web:tomcat
  • Check it with:
# svccfg -s svc:/cms/web:tomcat listprop method_context/environment


Ignore child process coredumps

      <property_group name='startd' type='framework'>
                 <!-- sub-process core dumps shouldn't restart
                         session -->
                 <propval name='ignore_error' type='astring'
                         value='core,signal' />
      </property_group>
# svccfg -s clamav
svc:/network/clamav> addpg startd framework
svc:/network/clamav> addpropvalue startd/ignore_error astring: core,signal
svc:/network/clamav> end