some issues with /usr/sbin/service
jdc at koitsu.org
Fri Feb 15 10:57:14 UTC 2013
On Fri, Feb 15, 2013 at 11:26:11AM +0100, Alfred Bartsch wrote:
> we want to use this script for server administration purposes. After
> doing some testing, for now there are following issues left:
> 1) every execution of "service -e" casts a bunch of unnecessary
> warnings into /var/log/messages:
> "... /usr/sbin/service: WARNING: $<name>_enable is not set
> properly - see rc.conf(5)."
> This is caused by calling "checkyesno()", provided by /etc/subr. It
> could be solved by using a local function, named "checkyes" or similar.
> The following patch prohibits these annoying messages:
Your patch, in effectively, "rewrites" checkyesno() to remove the warn()
call in cases where xxx_enable variables are set to values other than
yes/true/on/1 or no/false/off/0.
Here's a better idea:
Fix your /etc/rc.conf xxx_enable variables which contain values that
aren't permitted. That's what the warn() is for -- to tell you to fix
If there are ports (or worse, rc.d scripts) out there which recommend
xxx_enable variables with non-permitted values, then these ports need to
be fixed, not rc.subr(8) nor service(8). Please disclose what those are
so they can be fixed.
However, "service -e" does not emit warnings on my 2 systems:
root at icarus:~ # service -e
root at omake:~ # service -e
Regardless: the permitted values (see above) should be documented in
rc.conf(5) somewhere; I don't see any values other than "yes"
documented, but I'm probably overlooking it.
> 2) "service -e" does not show ALL enabled services, but only those who
> are explicitly enabled in /etc/defaults/rc.conf or /etc/rc.conf.
> Is that expected behavior?
It is the expected behaviour as I understand it per the man page. You
should also see rc(8).
As I understand it, an "enabled service" is not a process that's
running, but something that has a yes/true/on/1 value for its
xxx_enabled variable in rc.conf/related file. That's just how it works.
If you're used to, for example, Solaris "svcs" then yes things are
> To catch all enabled services where the <name>_enabled variable is set
> within the service procedure itself, perhaps a call like "service
> <name> status" could help.
There is already "service <name> status". See rc(8) (search for
"status") or try it yourself on a running service. Example:
root at icarus:~ # service postfix status
postfix is running as pid 1378.
Can you rephrase or give an example of what you want?
| Jeremy Chadwick jdc at koitsu.org |
| UNIX Systems Administrator http://jdc.koitsu.org/ |
| Mountain View, CA, US |
| Making life hard for others since 1977. PGP 4BD6C0CB |
More information about the freebsd-stable