mirror of
https://github.com/troglobit/finit.git
synced 2026-11-13 17:00:16 +00:00
Deprecation warning: inetd removal, update TODO accordingly
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
1 parent
1a5aabc034
commit
3fb700c17d
2 files changed
+21
-65
No files matched your search
+7
-2
@@ -4,13 +4,18 @@ Change Log
|
|||||||
All relevant changes are documented in this file.
|
All relevant changes are documented in this file.
|
||||||
|
|
||||||
|
|
||||||
[3.2][UNRELEASED] - 2020-04-xx
|
[3.2][UNRELEASED] - 2021-03-xx
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
Bug fix release, but also cgroups and a new progress!
|
Major bug fix release. New features include cgroups and a new progress!
|
||||||
|
|
||||||
https://twitter.com/b0rk/status/1214341831049252870?s=20
|
https://twitter.com/b0rk/status/1214341831049252870?s=20
|
||||||
|
|
||||||
|
> **Note:** deprecation warning, this is likely the last release with
|
||||||
|
> built-in inetd support! Current plan is to rip it out at
|
||||||
|
> the start of the next release cycle. It *may* return as
|
||||||
|
> a separate stand-alone daemon.
|
||||||
|
|
||||||
### Changes
|
### Changes
|
||||||
* Introducing Finit progress 𝓜𝓸𝓭𝓮𝓻𝓷
|
* Introducing Finit progress 𝓜𝓸𝓭𝓮𝓻𝓷
|
||||||
* Support for `sysv` start/stop scripts as well as monitoring forking
|
* Support for `sysv` start/stop scripts as well as monitoring forking
|
||||||
|
|||||||
+14
-63
@@ -1,36 +1,33 @@
|
|||||||
Goals of Finit
|
Goals of Finit
|
||||||
==============
|
==============
|
||||||
|
|
||||||
The intent of finit is to monitor not just processes, but to supervise
|
Initially Finit aimed to be more than a processes monitor, acting as a
|
||||||
an entire system and the behavior of certain processes that declare
|
replacement for cron/at and inetd as well. Over time, however, the true
|
||||||
themselves to be finit compliant. Similar to launchd, the goal of
|
value in the project turned out to be:
|
||||||
finit is to be a replacement for:
|
|
||||||
|
|
||||||
* init
|
> A simple SysV init and systemd replacement, primarily for embedded
|
||||||
* inetd
|
> systems, container, and dedicated server applications.
|
||||||
* crond
|
|
||||||
* watchdogd
|
|
||||||
|
|
||||||
A small and simple replacement, primarily for embedded systems, with a
|
|
||||||
low dependency on external packages. A compliant software is one that
|
|
||||||
can run as a damon in the foreground. If it can also touch its PID file
|
|
||||||
after a reconfiguration (`initctl reload`), the Finit dependency system
|
|
||||||
can also be used.
|
|
||||||
|
|
||||||
|
|
||||||
Near Future
|
Near Future
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
|
* Remove native inetd support. Relocate to a stand-alone application,
|
||||||
|
possibly even outside of the Finit project. Will greatly simplify
|
||||||
|
the remaining bits ...
|
||||||
|
* ... when inetd support has been removed, we can refactor the .conf
|
||||||
|
parser, parse user input in a separate process, move process monitor
|
||||||
|
to separate process (same as parser?), and possibly even ...
|
||||||
|
* ... add new (complimentary) .svc file format to slowly migrate away
|
||||||
|
from the very terse one-liner format currently used.
|
||||||
* When a process dies, and Finit does not restart it, we should collect
|
* When a process dies, and Finit does not restart it, we should collect
|
||||||
a `siginfo_t` from the SIGCHLD signal and supply to the user in case
|
a `siginfo_t` from the SIGCHLD signal and supply to the user in case
|
||||||
`initctl status <process>` is called to debug the issue.
|
`initctl status <process>` is called to debug the issue.
|
||||||
* Merge UDP redirect service uredir as an UDP inetd variant
|
|
||||||
* Add `finit.conf` support for UPS notification (SIGPWR) to start a task
|
* Add `finit.conf` support for UPS notification (SIGPWR) to start a task
|
||||||
using, e.g. <sys/power/{ok,fail,low}> conditions. More info in sig.c
|
using, e.g. <sys/power/{ok,fail,low}> conditions. More info in sig.c
|
||||||
* Add `finit.conf` support for ctrl-alt-delete (SIGINT) and kbrequest,
|
* Add `finit.conf` support for ctrl-alt-delete (SIGINT) and kbrequest,
|
||||||
i.e. KeyboardSignal, (SIGWINCH) behavior. Using conditions to a task,
|
i.e. KeyboardSignal, (SIGWINCH) behavior. Using conditions to a task,
|
||||||
e.g, <sys/key/ctrlaltdel> and <sys/key/signal> like SIGPWR handling.
|
e.g, <sys/key/ctrlaltdel> and <sys/key/signal> like SIGPWR handling.
|
||||||
* Cron/At support, see below
|
|
||||||
* Write man pages for finit and `finit.conf`, steal from the excellent
|
* Write man pages for finit and `finit.conf`, steal from the excellent
|
||||||
`pimd` man pages ...
|
`pimd` man pages ...
|
||||||
|
|
||||||
@@ -67,53 +64,7 @@ Init
|
|||||||
----
|
----
|
||||||
|
|
||||||
Finit in itself is not SysV Init compatible, it doesn't use `/etc/rc.d`
|
Finit in itself is not SysV Init compatible, it doesn't use `/etc/rc.d`
|
||||||
and `/etc/inet.d` scripts to boot the system. However, a plausible way
|
and `/etc/init.d` scripts to boot the system. However, a plausible way
|
||||||
to achieve compatibility would be to add a plugin to finit which reads
|
to achieve compatibility would be to add a plugin to finit which reads
|
||||||
`/etc/inittab` to be able to start standard Linux systems.
|
`/etc/inittab` to be able to start standard Linux systems.
|
||||||
|
|
||||||
|
|
||||||
Inetd
|
|
||||||
-----
|
|
||||||
|
|
||||||
* Add support for throttling connections.
|
|
||||||
* Optimize interface filtering by using socket filter. The functions
|
|
||||||
`inet_*_peek()` and `inetd_is_allowed()` used for interace filtering
|
|
||||||
should be possible to rewrite as socket filters.
|
|
||||||
* Optimize HTTP/HTTPS inetd connections by adding basic support for the
|
|
||||||
`inetd` variant `redir http/tcp@eth0 nowait [2345] 127.0.0.1:8080`,
|
|
||||||
which would reduce the overhead of spawn the web server on each HTTP
|
|
||||||
connection, yet still provide a means of filtering access per iface.
|
|
||||||
|
|
||||||
|
|
||||||
Crond
|
|
||||||
-----
|
|
||||||
|
|
||||||
Requirements are quite rudimentary, basic cron functionality, mainly
|
|
||||||
system-level timed periodic tasks:
|
|
||||||
|
|
||||||
* Periodically run a task, in a matching runlevel
|
|
||||||
* Optionally run as non-root (`crontab -e` as operator)
|
|
||||||
|
|
||||||
Proposed syntax:
|
|
||||||
|
|
||||||
# Crontab
|
|
||||||
cron @SPEC [LVLS] /path/to/cmd [ARGS] -- Optional descr
|
|
||||||
|
|
||||||
# One-shot 'at' command
|
|
||||||
at @YY-mm-ddTHH:MM [LVLS] /path/to/cmd [ARGS] -- Optional descr
|
|
||||||
|
|
||||||
Notice the ISO date in the `at` notation. The `cron @SPEC` could use
|
|
||||||
are mo loose notation, e.g. `@hourly`, `@midnight`, `@daily`, `@weekly`,
|
|
||||||
`@reboot`, etc. The runlevels is extra filtering sugar. E.g., if cron
|
|
||||||
service is only allowed in runlevels two or three it will not start if
|
|
||||||
system currently is in runlevel four.
|
|
||||||
|
|
||||||
To run a command as another user the `.conf` file must have a that
|
|
||||||
owner. E.g., `/etc/finit.d/extra.conf` may be owned by operator and
|
|
||||||
only hold `cron ...` lines.
|
|
||||||
|
|
||||||
What would be extremely useful is if `initctl`, or a homegrown `at`,
|
|
||||||
could support the basic functionality of the `at` command directly from
|
|
||||||
the shell -- that way setting up one-time jobs would not entail
|
|
||||||
re-reading `/etc/finit.conf`
|
|
||||||
|
|
||||||
Reference in new issue
Block a user