diff --git a/README.md b/README.md index 1d2f4864..afcc8169 100644 --- a/README.md +++ b/README.md @@ -348,6 +348,33 @@ in [doc/plugins.md](doc/plugins.md#hooks), and about the system bootstrap in [doc/bootstrap.md](doc/bootstrap.md). +### Limitations + +It is not possible to call Finit via signals or use `initctl` in any +runparts or `/etc/rc.local` script. This because Finit is single +threaded and is calling these scripts in a blocking fashion at the end +of runlevel S, at which point the event loop has not yet been started. + +The event loop is the whole thing which Finit is built around, except +for runlevel S, which remains a slow procession through a lot of set up, +with a few hooks and blocking call outs to external scripts. + +However, not all `initctl` commands are prohibited, supported commands: +are: + + - `inictl cond`: only operate of files in `/run/finit/cond` + - `initctl enable/disable`: enabled run/task/service is activated on + the runlevel change from S to 2 + - `initctl touch/show/create/delete/list`: `create`, provided the + non-interactive mode is used, again changes take effect in the + runlevel change directly after bootstrap + - `initctl -f reboot/poweroff/halt`: provided the `-f` flag is used to + force direct kernel commands + +**Example:** you can set a `usr/` condition in `/etc/rc.local` and have +a service/task in runlevel 2 depend on it to execute. + + Runlevels --------- @@ -440,6 +467,7 @@ Options: -c, --create Create missing paths (and files) as needed -f, --force Ignore missing files and arguments, never prompt -h, --help This help text + -j, --json JSON output in 'status' and 'cond' commands -1, --once Only one lap in commands like 'top' -p, --plain Use plain table headings, no ctrl chars -q, --quiet Silent, only return status of command @@ -484,6 +512,8 @@ Commands: ps List processes based on cgroups top Show top-like listing based on cgroups + plugins List installed plugins + runlevel [0-9] Show or set runlevel: 0 halt, 6 reboot reboot Reboot system halt Halt system