summaryrefslogtreecommitdiff
path: root/init/src/signals
diff options
context:
space:
mode:
Diffstat (limited to 'init/src/signals')
-rw-r--r--init/src/signals/sigterm.rs4
1 files changed, 4 insertions, 0 deletions
diff --git a/init/src/signals/sigterm.rs b/init/src/signals/sigterm.rs
index 97a3da7..cc59491 100644
--- a/init/src/signals/sigterm.rs
+++ b/init/src/signals/sigterm.rs
@@ -1,4 +1,5 @@
use crate::log::log_warning;
+use crate::services::units::stop_all_services;
use libc::{
SA_RESTART, SA_SIGINFO, SIGINT, SIGTERM, SIGUSR1, SIGUSR2, WNOHANG, c_int, sigaction,
@@ -89,6 +90,9 @@ pub fn setup_signal_handlers() -> Result<(), Box<dyn std::error::Error>> {
pub fn graceful_shutdown() -> Result<(), Box<dyn std::error::Error>> {
log_warning("Graceful shutdown initiated...");
+ // Stop all services first
+ let _ = stop_all_services();
+
// Reap all remaining children
loop {
let mut status: c_int = 0;