svccfg(8) on Solnix vs Linux and the BSDs
svccfg is the illumos command at /usr/sbin/svccfg that imports, exports and modifies service configuration in the SMF repository. It edits configuration data, not a text file, and changes usually take effect only after svcadm refresh. Linux, FreeBSD and OpenBSD have no single equivalent; each uses unit files, rc.conf files or rcctl.
The manual pages
- Solnix: svccfg(8) from
pkgs.solnix.illumos-world-man· illumos.org - Linux: systemctl(1) systemd-260.5 (different command, similar job)
- FreeBSD: sysrc(8) 15.1-RELEASE (different command, similar job)
- OpenBSD: rcctl(8) 8.0 (different command, similar job)
What Solnix runs
A default Solnix system runs the illumos svccfg at /usr/sbin/svccfg. No other variants are shipped. To start, stop or refresh instances, see svcadm(8). To read properties, see svcprop(1) and svcs(1).
Differences
| Compared with | Topic | What differs |
|---|---|---|
| all four | configuration store | svccfg manipulates data in the service configuration repository, either interactively, with one subcommand, or from a command file. sysrc edits rc.conf(5) files. rcctl writes rc.conf.local(8). The systemctl page in the bundle does not describe a repository. Source: Solnix svccfg(8) DESCRIPTION; FreeBSD sysrc(8) DESCRIPTION; OpenBSD rcctl(8) DESCRIPTION; Linux systemctl(1) DESCRIPTION |
| all four | changes need a refresh | On Solnix, changes to an existing service typically do not take effect until the instance is refreshed with the svcadm refresh subcommand. FreeBSD sysrc says a changed value takes effect next boot. The rcctl page does not describe a refresh step. Source: Solnix svccfg(8) DESCRIPTION; FreeBSD sysrc(8) DESCRIPTION (value to take effect next boot); OpenBSD rcctl(8) DESCRIPTION |
| FreeBSD, OpenBSD | invocation modes | svccfg runs interactively with no subcommand, with one subcommand, or with -f command-file. -s FMRI preselects an entity. sysrc takes name=value arguments and rcctl takes get/set/enable/disable commands. Neither page documents an interactive mode.Source: Solnix svccfg(8) SYNOPSIS, -f, -s; FreeBSD sysrc(8) SYNOPSIS; OpenBSD rcctl(8) SYNOPSIS |
| Linux, FreeBSD | -f meaning | svccfg -f reads and runs subcommands from a file. sysrc -f names rc.conf file(s) to operate on, replacing the rc_conf_files list. systemctl -f is --force.Source: Solnix svccfg(8) -f; FreeBSD sysrc(8) -f; Linux systemctl(1) option list (-f) |
| Linux, FreeBSD, OpenBSD | -v and -z meaning | svccfg -v gives more verbose output. sysrc -v prints the pathname of the rc.conf file holding each directive. svccfg -z manages services in a zone, from the global zone only. sysrc uses -j for a jail and -R for a root directory.Source: Solnix svccfg(8) -v, -z; FreeBSD sysrc(8) -v, -j, -R |
| all four | EDITOR variable | svccfg runs the command in EDITOR for the editprop subcommand, defaulting to vi(1). sysrc uses RC_CONFS and RC_DEFAULTS instead. The rcctl page lists no environment variables. Source: Solnix svccfg(8) ENVIRONMENT; FreeBSD sysrc(8) ENVIRONMENT; OpenBSD rcctl(8) |
| FreeBSD, OpenBSD | exit status | svccfg exits 0 on success, 1 if any subcommand failed, and 2 for invalid options. rcctl get exits 0 if enabled and 1 if not, and 2 means a non-existent daemon. sysrc -c returns success or failure for checks.Source: Solnix svccfg(8) EXIT STATUS; OpenBSD rcctl(8) EXIT STATUS; FreeBSD sysrc(8) -c |
| all four | output stability | svccfg interactive output is Not-An-Interface and may change at any time. Its command line interface and non-interactive output are Committed. Scripts should not parse interactive output. Source: Solnix svccfg(8) INTERFACE STABILITY |
| FreeBSD, OpenBSD | naming targets | svccfg selects an entity by FMRI with -s. sysrc names rc.conf variables, and rcctl names a daemon or service.Source: Solnix svccfg(8) -s; FreeBSD sysrc(8) SYNOPSIS; OpenBSD rcctl(8) SYNOPSIS |
Everyday tasks
| Task | Solnix | FreeBSD | OpenBSD |
|---|---|---|---|
| change service configuration | svccfg -s FMRI subcommand | sysrc name=value | rcctl set daemon variable argument |
| run a batch of changes from a file | svccfg -f command-file | — | — |
| apply changed configuration | svcadm refresh FMRI (see svcadm(8)) | — | rcctl reload daemon |
| read the current setting | see svcprop(1) | sysrc name | rcctl get daemon variable |
| enable at boot | see svcadm(8) | sysrc name=value | rcctl enable daemon |
Standards
- POSIX: svccfg is not a POSIX.1-2024 utility.
- Solnix: Interface Stability: the interactive output is Not-An-Interface; the command line interface and non-interactive output are Committed.
Writing portable scripts
- Do not expect svccfg elsewhere. Branch on the tool that is present (svccfg, sysrc, rcctl, systemctl), since configuration lives in the SMF repository on Solnix and in rc.conf files on FreeBSD and OpenBSD.
- Use only the command line interface or non-interactive output of svccfg in scripts, and check its exit status (1 means a subcommand failed).
Every difference here is taken from the manual pages linked above: Solnix's published page, Linux (man-pages and the GNU and util-linux manuals), FreeBSD, OpenBSD and NetBSD. Each row names its source. Where a manual is silent, this page is too. Compiled 2026-10-26. Found a mistake? Mail hackers@lists.solnix.io.