Documentation
¶
Overview ¶
kukepause is the minimal PID 1 for every kukeon cell's root (pause) container, replacing the previous `sleep infinity` from busybox (issue #931).
`sleep` makes a poor PID 1 for two reasons: it installs no SIGTERM handler, so the kernel's default-ignore-fatal-signals rule for PID 1 means a SIGTERM sent during cell deletion is dropped and `StopContainer` burns its full 10-second graceful-shutdown timeout before escalating to SIGKILL; and it does not reap orphaned children, so any process re-parented to the cell's PID 1 lingers as a zombie.
kukepause fixes both: it installs SIGTERM/SIGINT handlers that exit 0 (so cell teardown completes in well under a second) and a SIGCHLD reaper that harvests every re-parented child via wait4(2), then blocks on a Go select over those signal channels so it consumes no CPU while idle.
It is built CGO_ENABLED=0 (no libc dependency) and bind-mounted into each root container at /.kukeon/bin/kukepause; it cannot be staged from the kukeond image the way kuketty is, because root containers — including kukeond's own — must exist before kukeond is running, so `kuke init` pre-stages it on the host instead.