svccfg - import, export, and modify service configurations
/usr/sbin/svccfg [-v] [-s FMRI]
/usr/sbin/svccfg [-v] [-s FMRI] subcommand [args]...
/usr/sbin/svccfg [-v] [-s FMRI] -f command-file
The svccfg command manipulates data in the service configuration repository. svccfg can be invoked interactively, with an individual subcommand, or by specifying a command file that contains a series of subcommands.
Changes made to an existing service in the repository typically do not take effect for that service until the next time the service instance is refreshed. See the refresh subcommand, below, or the refresh subcommand in the svcadm(1M) man page for more details.
The following options are supported:
Reads and executes svccfg subcommands from command-file.
Selects the entity indicated by FMRI (a fault management resource identifier) before executing any subcommands. If –f command-file is not provided and no subcommands are specified on the command line, then masked entities will be treated as nonexistent. See smf(5).
Subcommands are divided into the categories specified in the subsections that follow.
All subcommands that accept FMRIs also accept abbreviated or globbed patterns. Instances and services can be abbreviated by specifying the instance name, or the trailing portion of the service name. For example, given the FMRI:
All the following are valid abbreviations:
sendmail :sendmail smtp smtp:sendmail network/smtp
While the following are invalid:
mail network network/smt
Abbreviated forms of FMRIs are unstable, and should not be used in scripts or other permanent tools. If a pattern matches more than one instance or service, an error message is printed and no action is taken.
Uses repfile as a repository. By default, svccfg(1M) uses the system repository.
Use repository only with files from the identical version of Solaris, including patches, that you are currently running. Do not use this subcommand with the system repository, /etc/svc/repository.db.
If you use svccfg repository to pre-populate the SMF repository before deployment time, use –p option to specify the root prefix for the system standard location for manifests imported with import. This prefix will be replaced by /lib/svc/manifest and /var/svc/manifest once the repository is on a live system. If manifests from your –p directory do not appear in a system standard location at runtime, the services associated with them will be removed.
Sets optional behavior. If no options are specified, set displays the options currently in effect.
Turns on verbose mode.
Turns off verbose mode.
If the argument is a service profile or manifest, apply the configuration to the admin layer of the SMF repository. Services, instances, property groups, and properties will be created as necessary.
If the type attribute of a property or property group is unspecified, an attempt will be made to determine the type from existing type settings or from the service template. If a type cannot be determined, a warning will be presented and the service will be skipped so inconsistent data will not be introduced into a service and instance. Nonexistent services and instances are ignored.
To use the relaxed element definitions in a profile, the following definitions need to be added to the DOCTYPE entry:
<!ENTITY % profile "INCLUDE"> <!ENTITY % manifest "IGNORE">
Services and instances modified by the profile will be refreshed. If –n is specified, the profile is processed and no changes are applied to the SMF repository. Any syntax error found will be reported on stderr and an exit code of 1 will be returned. See smf(5) for a description of service profiles. This command requires privileges to modify properties in the service and instance. See smf_security(5) for the privileges required to modify properties.
Services and instances in the manifest or profile will be validated against template data in the manifest and the repository, and warnings will be issued for all template violations. See smf_template(5) for a description of templates. If the –V option is specified, manifests that violate the defined templates will fail to import. In interactive invocations of svccfg, –V is the default behavior.
If the argument to apply is a directory, all profiles found under that directory tree will get applied as described above. The subcommand fails if a specified file or any file found with a .xml extension under a specified directory is not a service profile.
Displays a service profile for the specified FMRI or the whole system if an FMRI is not specified.
If –l is supplied, a list of layers can be selected from which to extract values. The –l option requires a layer name and takes the arguments: manifest, system-profile, site-profile, admin, current, all. current and all are synonyms, and select the highest-layer values. Multiple layers can be comma-separated or specified with multiple –l options.
If –l is not supplied, the default is –l admin,site-profile.
If a property is defined in multiple selected layers, only the highest layer is exported in the profile.
Without the –a option, property groups containing protected information (identified by the presence of the read_authorization property—see smf_security(5)) will be extracted without their property values. When the –a option is specified, all values will be extracted. An error results if there are insufficient privileges to read these values.
If an FMRI is given and that FMRI is a service, the profile will contain customizations only for that service and the instances of the service. If the provided FMRI is an instance, the profile will contain customizations for the service and the instance provided.
The output from svccfg export is similar to the following svccfg extract command output. The difference is that export generates a manifest, while extract generates a profile as described above.
svccfg extract -l current [-a] service_FMRI [>file]
svccfg import on a file in a system-managed filesystem location (subdirectories of /lib/svc/manifest and /var/svc/manifest) invokes: svcadm restart manifest-import.
Placing your manifests in a system-managed location and invoking svcadm restart manifest-import to import them is the recommended practice.
svccfg import on files in other locations imports their properties as administrative customization into the admin layer. It is equivalent to:
svccfg apply [file | directory]
If file is determined to be a service manifest or profile, then the FMRIs of the services and instances the file describes are printed. For each service, the FMRIs of its instances are displayed before the FMRI of the service.
The validate subcommand can operate on a manifest file, an instance FMRI, or the current instance or snapshot entity selection. When an argument is specified, svccfg will check to see whether the specified file exists. If the file exists, it will be validated. If a file of the specified name does not exist, the argument is treated as an FMRI pattern. If a conflict arises between a filename and an FMRI, use the svc: and file: prefixes to tell svccfg how to interpret the argument.
When you specify a file, the file is processed in a manner similar to import –V, but no changes are made to the repository. If any errors are detected, svccfg displays the errors and exits with a nonzero exit status.
For an instance fmri, instance entity selection, or snapshot entity selection, the specified instance in its composed form (see “Properties and Property Groups” in smf(5)) will be validated against template data in the repository. Instance FMRIs and instance entity selections use the “running” snapshot for validation. Warnings will be issued for all template violations. See smf_template(5) for a description of templates.
An “entity” refers to a scope, service, or service instance.
A new entity with the given name is created as a child of the current selection. See smf_security(5) for the privileges required to create entities.
The named child of the current selection or the entity specified by fmri is deleted. Attempts to delete service instances in the “online” or “degraded” state will fail unless the –f flag is specified. If a service or service instance has a “dependents” property group of type “framework”, then for each of its properties with type “astring” or “fmri”, if the property has a single value which names a service or service instance then the dependency property group in the indicated service or service instance with the same name as the property will be deleted. See smf_security(5) for the privileges required to delete service configurations.
Invoking the delete subcommand with an FMRI that identifies a service with a manifest in a standard location only masks, and does not delete, that service's definition. To delete a service, you must delete its manifest, then restart the manifest-import service with the following command:
# svcadm restart manifest-import
Note that reimporting a manifest does not remove a mask.
Use the liscust subcommand with the –M option to list masked services. See EXAMPLES for an example of unmasking a service.
See smf(5) for a description of the Oracle Solaris service management facility.
The child entities of the current selection whose names match the glob pattern pattern are displayed (see fnmatch(5)). ':properties' is also listed for property-bearing entities, namely services and service instances.
Commit the values from the current configuration to the running snapshot, making them available for use by the currently selected instance. If the repository subcommand has not been used to select a repository, direct the instance's restarter to reread the updated configuration. If the selection is a service, all instances of the service will be refreshed.
If the argument names a child of the current selection, it becomes the current selection. Otherwise, the argument is interpreted as an FMRI and the entity that the argument specifies becomes the current selection.
The parent of the current selection becomes the current selection.
Adds a property group with the given name and type (where, a type of application for application data is recommended) to the current selection. flags is a string of characters which designates the flags with which to create the property group. 'P' represents SCF_PG_FLAG_NONPERSISTENT (see scf_service_add_pg(3SCF)). See smf_security(5) for the privileges required to create property groups.
Adds the given value to a property. If type is given and the property exists, then if type does not agree with the property's type, the subcommand fails. If the pg does not exist, addpropvalue will create one if it can find the pg type and flags in the template definitions. If the selection is an instance, addpropvalue will look for the pg type and flags in the service before looking up the template definitions. If no pg type and flags are found, the subcommand will fail. The values may be enclosed in double-quotes. String values containing double-quotes or backslashes must be enclosed by double-quotes and the contained double-quotes and backslashes must be quoted by backslashes. Nonexistent properties are created, in which case the type specifier must be present. See scf_value_create(3SCF) for a list of available property types. See smf_security(5) for the privileges required to modify properties. The new value will be appended to the end of the list of property values associated with the property.
Delete any administrative customizations for the current selection. If an argument is supplied, it is taken as a glob pattern and only property groups and properties with names that match the argument are deleted.
If there is no current selection, no changes are made and the subcommand fails.
If –M is supplied, delete only masked entities.
To see what customizations delcust would remove, use listcust with the same options. As delcust can potentially remove all administrative customizations on the current selection, always run listcust first to determine you are removing what you intend to.
Deletes the property group name of the current selection. See smf_security(5) for the privileges required to delete property groups.
If the property group is backed by a manifest or profile, it is masked. See smf(5).
Deletes the named property group or property of the current selection. See smf_security(5) for the privileges required to delete properties.
Deletes all values matching the given glob pattern in the named property. Succeeds even if no values match. See smf_security(5) for the privileges required to modify properties.
Describes either the current or the possible settings.
When invoked without arguments, describe gives basic descriptions (if available) of the currently selected entity and all of its currently set property groups and properties. A property group or specific property can be queried by specifying either the property group name, or the property group name and property name, separated by a slash (/), as an argument.
The –v option gives all information available, including descriptions for current settings, constraints, and other possible setting choices.
The –t option shows only the template data for the selection (see smf_template(5)), and does not display the current settings for property groups and properties.
Comments of commands to reproduce the property groups and properties of the current selection are placed in a temporary file and the program named by the VISUAL environment variable is invoked to edit it. If VISUAL is not defined, EDITOR is used instead. If both environment variables are not defined, then the default editor vi(1) is used. Upon completion, the commands in the temporary file are executed. See smf_security(5) for the privileges required to create, modify, or delete properties.
By default editprop will not display SMF infrastructure property groups such as framework, dependency, templates, firewall, and notification parameters or properties templated with visibility hidden. If an instance is selected, the composed view of the properties are placed in the temporary file. The –a option will place all properties in the temporary file, including properties in SMF infrastructure property groups and those templated with visibility hidden.
Displays the names, types, and flags of property groups of the current selection. If an argument is given, it is taken as a glob pattern and only property groups with names which match the argument are listed.
In interactive mode, a basic description of the property groups is also given.
Lists property groups and properties of the current selection. For property groups, names, types, and flags are listed. For properties, names (prepended by the property group name and a slash (/)), types, and values are listed. See scf_value_create(3SCF) for a list of available property types. If an argument is supplied it is taken as a glob pattern and only property groups and properties with names which match the argument are listed.
With the –l option, print the layer the value came from. The –l option requires a layer, and takes the arguments: manifest, system-profile, site-profile, admin, current, all. current prints the same property values as listprop without –l, along with the layer that value was defined in.
The –f and –o options are mutually exclusive. –f prints the file, if any, a property came from. –o allows field selection. Selectable fields include:
the property name
the property group name
the instance name
the service name
the property type
the property value
the source file
whether the property group or property is currently masked
the time this property last changed
Print all admin layer customizations and masked entities for the current selection. If an argument is supplied, it is taken as a glob pattern and only property groups and properties with names that match the argument are listed.
If there is no current selection, list all customizations for all services.
If –M is supplied, print only masked entities.
If –L is supplied, show all local customizations, including those in the site profile layer in addition to those in the admin layer.
Sets a method environment variable for a service or instance by changing the “environment” property in the method_name property group, if that property group has type “method”. If method_name is not specified and the –i option is used, the “method_context” property group is used, if an instance is currently selected. If the –s option is used and a service is currently selected, its “method_context” property group is used. If the –s option is used and an instance is currently selected, the “method_context” property group of its parent is used. If neither the –i option nor the –s option is used, the “start” property group is searched for in the currently selected entity and, if an instance is currently selected, its parent is also searched. If the “inetd_start” property group is not located, it is searched for in a similar manner.
Once the property is located, all values which begin with envvar followed by a “=” are removed, and the value “envvar=value” is added. See smf_security(5) for the privileges required to modify properties.
Sets the name property of the pg property group of the current selection to the given values of type type. See scf_value_create(3SCF) for a list of available property types. If the pg does not exist setprop will create one if it can find the pg type and flags in the template definitions. If the selection is an instance, setprop will look for the pg type and flags in the service before looking up the template definitions. If no pg type and flags are found, the subcommand will fail. If the named property does not exist, it is created, as long as the type is specified. If the property already exists and the type disagrees with the existing type on the property, the subcommand fails. If no type and no value are provided, setprop will delete all values for the pg/name. Values may be enclosed in double-quotes. String values which contain double-quotes or backslashes must be enclosed by double-quotes and the contained double-quotes and backslashes must be quoted by backslashes. Multiple values will be stored in the order in which they are specified. See smf_security(5) for the privileges required to create or modify properties.
Removes a method environment variable for a service or instance by changing the “environment” property in the method_name property group, if that property group has type “method”. If method_name is not specified and the –i option is used, the “method_context” property group is used, if an instance is currently selected. If the –s option is used and a service is currently selected, its “method_context” property group is used. If the –s option is used and an instance is currently selected, the “method_context” property group of its parent is used. If neither the –i option nor the –s option is used, the “start” property group is searched for in the currently selected entity and, if an instance is currently selected, its parent is also searched. If the “inetd_start” property group is not located, it is searched for in a similar manner.
Once the property is located, all values which begin with envvar followed by “=” are removed. See smf_security(5) for the privileges required to modify properties.
Sets notifications parameters for software events and Fault Management problem lifecycle events in the SMF repository.
Used to set system-wide notification parameters for SMF state transition. See smf(5). These notification parameters are set in svc:/system/svc/global:default regardless of any svccfg current selection. This subcommand refreshes all instances it modifies.
Comma-separated list of FMA Event classes or aliases. See smf(5) Notification Parameters.
Comma-separated list of SMF state transitions. See smf(5) Notification Parameters.
URI format for each notification mechanism implemented: For SMTP use:
...and for SNMP traps use:
The parameter msg_template defined in smtp-notify(1M) can be set as a header value in the mailto URI. For example:
mailto:root@localhost?msg_template=<path to template file>
SNMP traps are directed to the host as defined by the trapsink directive in /etc/net-snmp/snmp/snmpd.conf or as specified by the SNMP trap notification daemon. See smtp-notify(1M).
The notification parameters are specific to the class or tset specified and overwrite preexisting notification parameters. The active/inactive form does not overwrite previous notification parameters. It just switches on or off the notification mechanism for the specified class or tset. Setting notification parameters implicitly sets them as active.
Displays the existing notification parameters for the specified class or tset. With the –g option, the notification parameters in svc:/system/svc/global:default are displayed. If tset is omitted, all is implied.
Delete the existing notification parameters for the specified class or tset. With the –g option, the notification parameters in svc:/system/svc/global:default are deleted.
Displays snapshots available for the currently selected instance.
Reverts the administrative customizations of the currently selected instance and its service to those recorded in the named snapshot. If no argument is given, use the currently selected snapshot and deselect it on success. The changed property values can be made active via the refresh subcommand of svcadm(1M). See smf_security(5) for the privileges required to change properties.
Changes the current snapshot to the one named by name. If no name is specified, deselect the currently selected snapshot. Snapshots are read-only.
Commit the values from the current configuration to the running snapshot, making them available for use by the currently selected instance. If the repository subcommand has not been used to select a repository, direct the instance's restarter to reread the updated configuration.
The following example imports a service description for the seismic service in the XML manifest specified on the command line.
# svccfg import /var/svc/manifest/site/seismic.xml
Note that the manifest must follow the format specified in service_bundle(4).Example 2 Exporting a Service Description
To export a service description on the local system:
# svccfg export dumpadm >/tmp/dump.xmlExample 3 Deleting a Service Instance
To delete a service instance:
# svccfg delete network/inetd-upgrade:defaultExample 4 Checking Properties in an Alternate Repository
To examine the state of a service's properties after loading an alternate repository, use the sequence of commands shown below. One might use such commands, for example, to determine whether a service was enabled in a particular repository backup.
# svccfg svc:> repository /etc/svc/repository-boot svc:> select telnet:default svc:/network/telnet:default> listprop general/enabled general/enabled boolean false svc:/network/telnet:default> exitExample 5 Enabling Debugging
To modify LD_PRELOAD for a start method and enable the use of libumem(3LIB) with debugging features active:
$ svccfg -s system/service setenv LD_PRELOAD libumem.so $ svccfg -s system/service setenv UMEM_DEBUG defaultExample 6 Using describe Subcommand
The following command illustrates the use of the describe subcommand.
# svccfg -s console-login describe ttymon ttymon application ttymon/device astring /dev/console terminal device to be used for the console login prompt ttymon/label astring console appropriate entry from /etc/ttydefs ...Example 7 Configuring Notification Preferences
The following command configures notification preferences for SMF service state transition events.
# svccfg setnotify -g from-online,to-maintenance \ mailto:email@example.comExample 8 Enabling SNMP Notifications
The following command enables SNMP notifications for Fault Management events.
# svccfg setnotify problem-diagnosed,problem-updated \ mailto:firstname.lastname@example.org snmp:Example 9 Listing Notification Settings
The following command lists notification settings for Fault Management events.
# svccfg listnotify problem-diagnosed,problem-updated Event: problem-diagnosed Notification Type: smtp active: true to: email@example.com Notification Type: snmp active: true Event: problem-updated Notification Type: smtp active: true to: firstname.lastname@example.org Notification Type: snmp active: trueExample 10 Unmasking a Service
The following sequence of commands shows the existence of the service mysvc, that mysvc is masked, and finally unmasks the service.
$ svcs -l mysvc fmri svc:/system/mysvc:default name Manifest to test snapshots enabled true state online next_state none state_time January 13, 2012 09:42:55 AM MST logfile /var/svc/log/system-mysvc:default.log restarter svc:/system/svc/restarter:default manifest /lib/svc/manifest/test/mysvc.xml dependency require_all/none svc:/system/filesystem/local (online) [ Note manifest file in standard location. ] # svccfg delete -f mysvc $ svcs mysvc svcs: Pattern 'mysvc' doesn't match any instances STATE STIME FMRI [ Not listed because service is masked. ] $ svccfg listcust -M | grep mysvc svc:/system/mysvc manifest MASKED manifestfiles/lib_svc_manifest_test_mysvc_xml astring admin \ MASKED /lib/svc/manifest/test/mysvc.xml svc:/system/mysvc:default manifest MASKED [ First line, above, shows that service is masked. Masking is propagated down, so the instance is also masked as shown in the last line. ] # svccfg -s svc:/system/mysvc delcust Deleting customizations for service: system/mysvc $ svcs mysvc STATE STIME FMRI online 9:48:25 svc:/system/mysvc:default [ Masking has been removed. ]Example 11 Setting a Multi-Value Property
The following command sets a multi-value property. Note that the property is enclosed in single quotes so that the parentheses and double quotes do not need to be escaped.
# svccfg -s svc:/stooges setprop foo/bar = astring: \ '("moe" "Curly" "Larry")'Example 12 Clearing All Values from a Property Using setprop
The following command uses setprop to clear all values from a property.
# svccfg -s svc:/stooges setprop foo/bar =Example 13 Clearing All Values from a Property Using delpropvalue
The following command uses delpropvalue to clear all values from a property.
# svccfg -s svc:/stooges delpropvalue foo/bar \*Example 14 Setting Property with Embedded Whitespace
The following command shows the correct use of quotation marks when setting a property whose value is a string with embedded whitespace.
# svccfg -s svc:inst setprop pg/prop = \ astring '"without single quotes, shells eat double quotes"'
The command to run when the editprop subcommand is used. The default editor is vi(1).
The following exit values are returned:
One or more subcommands resulted in failure. Error messages are written to the standard error stream.
Invalid command line options were specified.
See attributes(5) for descriptions of the following attributes:
The interactive output is Uncommitted. The invocation and non-interactive output are Committed.
svcprop(1), svcs(1), smtp-notify(1M), svcadm(1M), svc.configd(1M), libscf(3LIB), libumem(3LIB), scf_service_add_pg(3SCF), scf_value_create(3SCF), contract(4), service_bundle(4), attributes(5), fnmatch(5), smf(5), smf_method(5), smf_security(5), smf_template(5)