This manual documents the dmd service manager. It is used to start and stop system services (typically daemons) in a reliable fashion. For instance it will dynamically determine and start any other services that our desired service depends upon. As another example, dmd might detect conflicts between services. In this situation it would simply prevent the conflicting services from running concurrently.
dmd is the init system of the GNU operating system—it is the
first user process that gets started, typically with PID 1, and runs
root. Normally the purpose of init systems is to manage all
system-wide services, but dmd can also be a useful tool assisting
unprivileged users in the management of their own daemons.
Unfortunately all flexible software requires some time to master and
dmd is no different. But don’t worry: this manual should allow you to
get started quickly. Its first chapter is designed as a practical
introduction to dmd and should be all you need for everyday use
(see Jump Start). In chapter two we will describe the
dmd programs, and their relationship, in
more detail (deco and dmd). Subsequent chapters provide a full
reference manual and plenty of examples, covering all of dmd’s
capabilities. Finally, the last chapter provides information for
those souls brave enough to hack dmd itself.
The name dmd stands for Daemon Managing Daemons (or Daemons-Managing Daemon?).
This program is written in Guile, an implementation of the Scheme programming language, using the GOOPS extension for object-orientation. Guile is also dmd’s configuration language (see GNU Guile Reference Manual). We have tried to make dmd’s basic features as accessible as possible—you should be able to use these even if you do not know how to program in Scheme. A basic grasp of Guile and GOOPS is required only if you wish to make use of dmd’s more advanced features.