Solaris SMF: Difference between revisions

From Lolly's Wiki
Jump to navigationJump to search
m (Text replacement - "<source" to "<syntaxhighlight")
Line 3: Line 3:


== Running foreground processes ==
== Running foreground processes ==
<source lang=xml>
<syntaxhighlight lang=xml>
<?xml version='1.0'?>
<?xml version='1.0'?>
<!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
<!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
Line 45: Line 45:
==Adding dependency on another service==
==Adding dependency on another service==
For example mount NFS after ZFS:
For example mount NFS after ZFS:
<source lang=bash>
<syntaxhighlight lang=bash>
svccfg -s svc:/network/nfs/client addpg filesystem-local dependency
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/grouping = astring: require_all                       
Line 58: Line 58:


The problem:
The problem:
<source lang=bash>
<syntaxhighlight lang=bash>
# 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 -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.
svccfg: Syntax error.
Line 65: Line 65:
So you have to set the complete environment this way:
So you have to set the complete environment this way:
* Get the complete environment:
* Get the complete environment:
<source lang=bash>
<syntaxhighlight lang=bash>
# svccfg -s svc:/cms/web:tomcat listprop method_context/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"
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"
Line 71: Line 71:


* Set the complete (modified) environment:
* Set the complete (modified) environment:
<source lang=bash>
<syntaxhighlight lang=bash>
# 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")'
# 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
# svcadm refresh svc:/cms/web:tomcat
Line 77: Line 77:


* Check it with:
* Check it with:
<source lang=bash>
<syntaxhighlight lang=bash>
# svccfg -s svc:/cms/web:tomcat listprop method_context/environment
# svccfg -s svc:/cms/web:tomcat listprop method_context/environment
</source>
</source>
Line 84: Line 84:
== Ignore child process coredumps ==
== Ignore child process coredumps ==


<source lang=xml>
<syntaxhighlight lang=xml>
       <property_group name='startd' type='framework'>
       <property_group name='startd' type='framework'>
                 <!-- sub-process core dumps shouldn't restart
                 <!-- sub-process core dumps shouldn't restart
Line 93: Line 93:
</source>
</source>


<source lang=bash>
<syntaxhighlight lang=bash>
# svccfg -s clamav
# svccfg -s clamav
svc:/network/clamav> addpg startd framework
svc:/network/clamav> addpg startd framework

Revision as of 17:52, 25 November 2021

SMF


Running foreground processes

<syntaxhighlight lang=xml> <?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> </source>

Adding dependency on another service

For example mount NFS after ZFS: <syntaxhighlight lang=bash> 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 </source>

Setting multiple parameters to environment variables

1. The goal:

  • Setting -Xmx from 512m to 2G

The problem: <syntaxhighlight lang=bash>

  1. 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. </source>

So you have to set the complete environment this way:

  • Get the complete environment:

<syntaxhighlight lang=bash>

  1. 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" </source>

  • Set the complete (modified) environment:

<syntaxhighlight lang=bash>

  1. 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")'
  2. svcadm refresh svc:/cms/web:tomcat

</source>

  • Check it with:

<syntaxhighlight lang=bash>

  1. svccfg -s svc:/cms/web:tomcat listprop method_context/environment

</source>


Ignore child process coredumps

<syntaxhighlight lang=xml>

     <property_group name='startd' type='framework'>
                <propval name='ignore_error' type='astring'
                        value='core,signal' />
     </property_group>

</source>

<syntaxhighlight lang=bash>

  1. svccfg -s clamav

svc:/network/clamav> addpg startd framework svc:/network/clamav> addpropvalue startd/ignore_error astring: core,signal svc:/network/clamav> end </source>