diff options
author | Ludovic Courtès <ludo@gnu.org> | 2025-01-25 12:45:58 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2025-02-09 18:20:42 +0100 |
commit | 5f6fdadb4af5a0a94f41c4365a3c73e31fed01af (patch) | |
tree | ebaea27dddfd93bcf5baec2e46704d3b0edece06 | |
parent | ba9af3e151db8f0f86aeaea681a937e995b5b265 (diff) |
services: user-processes: Remove support for /etc/shepherd/do-not-kill.
The /etc/shepherd/do-not-kill feature has been unused since commit
c8289690365887ca1dd122645e479a89cf7cd969, which switched from
unionfs (FUSE) to overlayfs.
* gnu/services/shepherd.scm (%do-not-kill-file): Remove.
(user-processes-shepherd-service): In ‘stop’ action, remove
‘kill-except’, ‘omitted-pids’, and ‘lset=’. Remove conditionals on
‘omitted-pids’ being non-empty.
Change-Id: Id7c6031fc12fd8ff0a3fde955fb01e373751e2d0
-rw-r--r-- | gnu/services/shepherd.scm | 46 |
1 files changed, 4 insertions, 42 deletions
diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm index d222628280..52588c04e3 100644 --- a/gnu/services/shepherd.scm +++ b/gnu/services/shepherd.scm @@ -553,11 +553,6 @@ need to be restarted to complete their upgrade." ;;; User processes. ;;; -(define %do-not-kill-file - ;; Name of the file listing PIDs of processes that must survive when halting - ;; the system. Typical example is user-space file systems. - "/etc/shepherd/do-not-kill") - (define (user-processes-shepherd-service requirements) "Return the 'user-processes' Shepherd service with dependencies on REQUIREMENTS (a list of service names). @@ -575,48 +570,15 @@ system mounts, etc. This is similar to the 'sysvinit' target in systemd." (requirement requirements) (start #~(const #t)) (stop #~(lambda _ - (define (kill-except omit signal) - ;; Kill all the processes with SIGNAL except those listed - ;; in OMIT and the current process. - (let ((omit (cons (getpid) omit))) - (for-each (lambda (pid) - (unless (memv pid omit) - (false-if-exception - (kill pid signal)))) - (processes)))) - - (define omitted-pids - ;; List of PIDs that must not be killed. - (if (file-exists? #$%do-not-kill-file) - (map string->number - (call-with-input-file #$%do-not-kill-file - (compose string-tokenize - (@ (ice-9 rdelim) read-string)))) - '())) - - (define lset= (@ (srfi srfi-1) lset=)) - (display "sending all processes the TERM signal\n") - (if (null? omitted-pids) - (begin - ;; Easy: terminate all of them. - (kill -1 SIGTERM) - (sleep #$grace-delay) - (kill -1 SIGKILL)) - (begin - ;; Kill them all except OMITTED-PIDS. XXX: We would - ;; like to (kill -1 SIGSTOP) to get a fixed list of - ;; processes, like 'killall5' does, but that seems - ;; unreliable. - (kill-except omitted-pids SIGTERM) - (sleep #$grace-delay) - (kill-except omitted-pids SIGKILL) - (delete-file #$%do-not-kill-file))) + (kill -1 SIGTERM) + (sleep #$grace-delay) + (kill -1 SIGKILL) (let wait () (let ((pids (processes))) - (unless (lset= = pids (cons 1 omitted-pids)) + (unless (equal? '(1) pids) (format #t "waiting for process termination\ (processes left: ~s)~%" pids) |