# Dinit
-v0.3.0 (pre-release)
+v0.4.0 (pre-release)
This is the README for Dinit, the service manager and init system. It is
intended to provide an overview; For full documentation please check the manual pages.
Dinit is designed to work on POSIXy operating systems such as Linux and
OpenBSD. It is written in C++ and uses the [Dasynq](http://davmac.org/projects/dasynq/)
-event handling library, which was written especially to support Dinit.
+event handling library, which was written especially to support Dinit. (Note
+that a copy of Dasynq is bundled with Dinit, so a separate copy is not
+required for compilation; however, the bundled copy does not include the
+documentation or test suite).
Development goals include clean design, robustness, portability, and
avoiding feature bloat (whilst still handling a variety of use cases).
Dinit was written by Davin McCall <davmac@davmac.org>.
-See BUILD for information on how to build Dinit.
+See BUILD.txt for information on how to build Dinit.
## Configuring services
often a shell script - to completion). There are also _bgprocess_ services
and _internal_ services.
-Many programs that you might want to run under dinit's supervision can run
+Many programs that you might want to run under Dinit's supervision can run
either "in the foreground" or as a daemon ("in the background"), and the
choice is dictated by a command line switch (for instance the -D and -F
switches to Samba's "smbd"). Although it might seem counterintuitive,
the "foreground" mode should be used for programs registered as process
-services in dinit; this allows dinit to monitor the process.
+services in Dinit; this allows Dinit to monitor the process.
Process services are attractive due to the ease of monitoring (and
restarting) the service, however, they have one inherent problem, which is
-that dinit cannot tell when the service is truly started. Once the process
-has been launched, dinit assumes that the service has started, but in fact
+that Dinit cannot tell when the service is truly started. Once the process
+has been launched, Dinit assumes that the service has started, but in fact
there will be a short delay before the process sets itself up, starts
listening on sockets, etc; during this time any other process (including
one from a service listed as dependent) which tries to contact it will not
matches the name of the service. Service descriptions are loaded lazily, as
needed by Dinit.
+(An example of a complete set of system service descriptions can be found in
+the [doc/linux/services](doc/linux/services) directory).
+
A service description file consists of a number of parameter settings.
Settings in the SDF are denoted as a parameter name followed by either an
equal sign or colon and then the parameter value (all on the same line).
### Using dinitctl
-You can use the "dinitctl" to start and stop services. Typical invocations
+You can use the "dinitctl" utility to start and stop services. Typical invocations
are:
dinitctl start <service-name>
(although it may then immediately restart, depending on how it and its
dependents are configured).
-Use the "-s" switch to talk the "system" instance of dinit, rather than a
+Use the "-s" switch to talk the "system" instance of Dinit, rather than a
personal instance, e.g:
dinitctl -s start mysql # start system mysql service