by Daniel Pimentel — Tue 02 February 2016
The GNU Daemon Shepherd or GNU Shepherd, formerly known as GNU dmd, is a service manager that looks after the herd of system services. It provides a replacement for the service-managing capabilities of SysV-init (or any other init) with a both powerful and beautiful dependency-based system with a convenient interface. It is intended for use on GNU/Hurd, but it is supposed to work on every POSIX-like system where Guile is available. In particular, it is used as PID 1 by the Guix System Distribution (GuixSD).
herd enable foo herd start foo herd stop foo herd status herd status foo herd detailed-status herd detailed-status foo herd load shepherd ~/new-service.scm
(define foo (make <service> #:provides '(foo) #:start (...) #:stop (...))) (register-services foo)
- shepherd is a daemon, herd the program that controls it.
- You can start, stop, restart, enable and disable every service, as well as display its status.
- You can perform additional service-specific actions, which you can also list.
- Actions can have arguments.
- You can display the status of a service, even if the service does not provide a specific implementation for this action. The same is true for restarting.
- The root/shepherd service is used to control shepherd itself.