I had to make a little change to systemctl to use a file as a flag when the system is rebooting. Likely, this a use case that most people would not be interested in. And it might exist a better way to do it. Anyway, this is the patch: diff --git a/src/basic/fs-util.h b/src/basic/fs-util.h index 1f0bdd95b3..9643763d13 100644 --- a/src/basic/fs-util.h +++ b/src/basic/fs-util.h @@ -16,6 +16,8 @@ #define MODE_INVALID ((mode_t) -1) +#define REBOOTING_FILE "/run/systemd/is-rebooting" + /* The following macros add 1 when converting things, since 0 is a valid mode, while the pointer * NULL is special */ #define PTR_TO_MODE(p) ((mode_t) ((uintptr_t) (p)-1)) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 5ac40be4a7..652b1af12f 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -3587,6 +3587,10 @@ static int start_special(int argc, char *argv[], void *userdata) { bool termination_action; /* an action that terminates the manager, * can be performed also by signal. */ + r = touch(REBOOTING_FILE); + if (r < 0) + log_debug_errno(r, "Failed to touch %s, ignoring: %m", REBOOTING_FILE); + assert(argv); a = verb_to_action(argv[0]); @@ -9089,6 +9093,10 @@ static int logind_schedule_shutdown(void) { static int halt_main(void) { int r; + r = touch(REBOOTING_FILE); + if (r < 0) + log_debug_errno(r, "Failed to touch %s, ignoring: %m", REBOOTING_FILE); + r = logind_check_inhibitors(arg_action); if (r < 0) return r; ▷ Javier's 🖊 On 4/19/21 2:19 PM, Tia, Javier wrote: > Hi, > > Is there a way to know inside of systemd if it's in a reboot state? > > Something like the Linux kernel does [1], keeping the system state in a > variable. > > [1] > https://elixir.bootlin.com/linux/v4.19.98/source/include/linux/kernel.h#L581 > > ▷ Javier's 🖊 > _______________________________________________ > systemd-devel mailing list > systemd-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/systemd-devel _______________________________________________ systemd-devel mailing list systemd-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/systemd-devel