> By this redefinition, a good init is one that doesn't allow systems to go
> vegetable, either by having something they restart, or totally freaking
> out and burning down the world if the one thing they started ever
> vanishes.
>
> sinit could be made proper by forking a thing and then
> issuing the reboot(2) syscall any time its child vanished.
> Annoyingly aggressive on the restarts, but proper.
maybe you should have a look at the tiny "oneit" utility that is
part of/included in ToyBox (
http://landley.net/toybox/ ):
$ toybox help oneit
usage: oneit [-p] [-c /dev/tty0] command [...]
Simple init program that runs a single supplied command line with a
controlling tty (so CTRL-C can kill it).
-c Which console device to use (/dev/console doesn't do CTRL-C, etc)
-p Power off instead of rebooting when command exits
-r Restart child when it exits
-3 Write 32 bit PID of each exiting reparented process to fd 3 of child
(Blocking writes, child must read to avoid eventual deadlock.)
Spawns a single child process (because PID 1 has signals blocked)
in its own session, reaps zombies until the child exits, then
reboots the system (or powers off with -p, or restarts the child with -r).
Responds to SIGUSR1 by halting the system, SIGUSR2 by powering off,
and SIGTERM or SIGINT reboot.
Received on Fri May 03 2019 - 02:44:32 UTC