Files
finit/doc/state-machine.md
T
2025-07-10 15:22:55 +02:00

31 lines
1.2 KiB
Markdown

State Machine
=============
A service is bound to a state machine that is in one of ten states. For
run/tasks there is an additional end state called `DONE`. All processes
managed by Finit start in the `HALTED` state. The image shows how both
conditions and commands drive the machine.
![The service state machine](img/svc-machine.png "The service state machine")
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 not be stopped.
A service may be stopped, or blocked, for several reasons:
- The user has manually stopped the service using `initctl stop NAME`
- The program exits immediately. I.e. keeps crashing (make sure to use
the 'run this service in the foreground' command line option)
- The binary is missing in the filesystem
* `C`: Service conditions are satisfied:
- `on` (+): The condition is asserted.
- `off` (-): The condition is deasserted.
- `flux` (~): The condition state is unknown.
For a detailed description of conditions, and how to debug them,
see the [Finit Conditions](conditions.md) document.