From fafa34059864fb8985d66243270c1e72609d4762 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Tue, 11 Jan 2022 20:21:51 +0000 Subject: Catch SIGTERM in containers (for docker stop) Signed-off-by: Laurent Bercot --- doc/s6-linux-init-maker.html | 2 ++ src/init/s6-linux-init-maker.c | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/s6-linux-init-maker.html b/doc/s6-linux-init-maker.html index 1e87265..00a9722 100644 --- a/doc/s6-linux-init-maker.html +++ b/doc/s6-linux-init-maker.html @@ -337,6 +337,8 @@ Default is no utmpd service.
  • -C : create a set of scripts that is suitable for running in a container. This modifies some behaviours:
      +
    • SIGTERM will be caught by s6-svscan, and cause an orderly +shutdown of the container, as if the "poweroff" script had been invoked.
    • No early runleveld service is created. Changing runlevels via s6-linux-init-telinit diff --git a/src/init/s6-linux-init-maker.c b/src/init/s6-linux-init-maker.c index 6d2a146..209ad2c 100644 --- a/src/init/s6-linux-init-maker.c +++ b/src/init/s6-linux-init-maker.c @@ -563,7 +563,6 @@ static inline void make_image (char const *base) auto_dir(base, "run-image", 0, 0, 0755) ; auto_dir(base, "run-image/" SCANDIR, 0, 0, 0755) ; auto_dir(base, "run-image/" SCANDIR "/.s6-svscan", 0, 0, 0755) ; - auto_script(base, "run-image/" SCANDIR "/.s6-svscan/SIGTERM", &put_shebang_options, 0) ; auto_script(base, "run-image/" SCANDIR "/.s6-svscan/SIGQUIT", &put_shebang_options, 0) ; auto_script(base, "run-image/" SCANDIR "/.s6-svscan/SIGINT", &sig_script, "-r") ; auto_script(base, "run-image/" SCANDIR "/.s6-svscan/SIGUSR1", &sig_script, "-p") ; @@ -589,6 +588,7 @@ static inline void make_image (char const *base) if (inns) { + auto_script(base, "run-image/" SCANDIR "/.s6-svscan/SIGTERM", &sig_script, "-p") ; auto_script(base, "run-image/" SCANDIR "/.s6-svscan/crash", &container_crash_script, 0) ; auto_script(base, "run-image/" SCANDIR "/.s6-svscan/finish", &container_exit_script, 0) ; auto_dir(base, "run-image/" CONTAINER_RESULTS, 0, 0, 0755) ; @@ -596,6 +596,7 @@ static inline void make_image (char const *base) } else { + auto_script(base, "run-image/" SCANDIR "/.s6-svscan/SIGTERM", &put_shebang_options, 0) ; auto_script(base, "run-image/" SCANDIR "/.s6-svscan/crash", &death_script, "crashed") ; auto_script(base, "run-image/" SCANDIR "/.s6-svscan/finish", &death_script, "exited") ; auto_dir(base, "run-image/" SCANDIR "/" RUNLEVELD_SERVICEDIR, 0, 0, 0755) ; -- cgit v1.2.3