mirror of
https://github.com/troglobit/finit.git
synced 2026-10-03 22:43:08 +07:00
This is a first effort at cleaning up and consolidating all information about the new service state machine and how conditions control this state machine. Also, clarified and added sections for all documents regarding how services and conditions relate. Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
38 lines
1.1 KiB
Markdown
38 lines
1.1 KiB
Markdown
Finit Services
|
|
==============
|
|
|
|

|
|
|
|
State Machine
|
|
-------------
|
|
|
|
A service is bound to a state machine that is in one of six (6) states.
|
|
For `run`s and `task`s there is an additional end state called `DONE`,
|
|
not shown in the diagram for brevity. Services start in the `HALTED`
|
|
state.
|
|
|
|
The current state depends on the two following conditions:
|
|
|
|
* `E`: Service enabled. In order for `E` to be satisfied, the service
|
|
must be allowed to run in the current runlevel and must not be
|
|
blocked. A service may be blocked for several reasons:
|
|
|
|
- The user has manually stopped the service using `initctl stop JOB`
|
|
- The binary repeatedly dies after being started. I.e. keeps crashing.
|
|
- The binary is missing in the filesystem.
|
|
|
|
* `C`: Service conditions are satisfied:
|
|
|
|
- `on` (+): The condition is asserted.
|
|
- `off` (-): The condition is deasserted.
|
|
- `flux` (~): The conditions state is unknown.
|
|
|
|
For a detailed description of conditions, and how to debug them,
|
|
see the [Finit Conditions](conditions.md) document.
|
|
|
|
<!--
|
|
-- Local Variables:
|
|
-- mode: markdown
|
|
-- End:
|
|
-->
|