diff --git a/service.c b/service.c index 7eee0169..7554d06c 100644 --- a/service.c +++ b/service.c @@ -486,6 +486,11 @@ void service_reload_dynamic(void) */ void service_runlevel(int newlevel) { + if (newlevel == 0 || newlevel == 6) { + /* Call all shutdown hooks before rebooting... */ + plugin_run_hooks(HOOK_SHUTDOWN); + } + sm_set_runlevel(&sm, newlevel); sm_step(&sm); } diff --git a/sig.c b/sig.c index ca6c3356..65fce4c6 100644 --- a/sig.c +++ b/sig.c @@ -114,9 +114,6 @@ void do_shutdown(shutop_t op) } } - /* Call all shutdown hooks before rebooting... */ - plugin_run_hooks(HOOK_SHUTDOWN); - /* Update UTMP db */ utmp_set_halt();