root
Service ¶The service root
is special, because it is used to control the
Shepherd itself. It has an alias shepherd
. It provides the
following actions (in addition to enable
, disable
and
restart
which do not make sense here).
status
Displays which services are started and which ones are not.
detailed-status
Displays detailed information about every registered service.
load file
¶Evaluate in the shepherd
process the Scheme code in
file, in a fresh module that uses the (shepherd services)
module—as with the --config
option of shepherd
(see Invoking shepherd
).
eval exp
Likewise, evaluate Scheme expression exp in a fresh module with all the necessary bindings. Here is a couple of examples:
# herd eval root "(+ 2 2)" 4 # herd eval root "(getpid)" 1 # herd eval root "(lookup-running 'xorg-server)" (service (version 0) (provides (xorg-server)) ...)
unload service-name
Attempt to remove the service identified by service-name.
shepherd
will first stop the service, if necessary, and then
remove it from the list of registered services. Any services
depending upon service-name will be stopped as part of this
process.
If service-name simply does not exist, output a warning and do
nothing. If it exists, but is provided by several services, output a
warning and do nothing. This latter case might occur for instance with
the fictional service web-server
, which might be provided by both
apache
and nginx
. If service-name is the special
string and all
, attempt to remove all services except for the Shepherd
itself.
reload file-name
Unload all known optional services using unload’s all
option,
then load file-name using load
functionality. If
file-name does not exist or load
encounters an error, you may
end up with no defined services. As these can be reloaded at a later
stage this is not considered a problem. If the unload
stage
fails, reload
will not attempt to load file-name.
daemonize
Fork and go into the background. This should be called before
respawnable services are started, as otherwise we would not get the
SIGCHLD
signals when they terminate.
kexec
On GNU/Linux, reboot straight into a new Linux kernel previously loaded
with the kexec -l file
command. This is the action
invoked by the reboot -k
command. See Invoking reboot
.