[systemd-devel] pid namespaces, systemd and signals on reboot(2)
Mike Gilbert
floppym at gentoo.org
Sun May 28 18:43:45 UTC 2017
On Sat, May 27, 2017 at 2:51 PM, MichaĆ Zegan
<webczat_200 at poczta.onet.pl> wrote:
> Hello.
>
> I came across the following:
> The manpage reboot(2) says, that inside of a pid namespace, a reboot
> call that normally would trigger restart actually triggers sending
> sighup to the init of a namespace, and sigint is sent in case of
> halt/poweroff.
> I have verified that reboot actually triggers sighup. does it mean you
> cannot "reboot -f" in a pid namespace, because it will actually trigger
> something like "systemctl daemon-reload"? (confusing behavior)...
> About poweroff, I used unshare -Upfr and then typed poweroff -f, and the
> bash started by unshare exited. Bash does not exit on sigint, so not
> sure what was sent? sigkill?
> Also, how does systemd handle this case when you tell systemd to power
> off/reboot? it probably exits instead of calling reboot(2), but does it
> make it possible to distinguish reboot from power off?
> Sorry for such an partially offtopic question.
I think that section of reboot(2) is inaccurate. I don't see any
trappable signal actually being sent to the init process.
What actually seems to happen is this:
- All processes in the PID namespace are terminated by the kernel (SIGKILL?).
- The exit status on the "init" process is set so that it appears to
have been killed using SIGHUP or SIGINT. The parent process can use
this to distinguish between a reboot and a halt request.
More information about the systemd-devel
mailing list