summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2025-01-25 12:45:58 +0100
committerLudovic Courtès <ludo@gnu.org>2025-02-09 18:20:42 +0100
commit5f6fdadb4af5a0a94f41c4365a3c73e31fed01af (patch)
treeebaea27dddfd93bcf5baec2e46704d3b0edece06
parentba9af3e151db8f0f86aeaea681a937e995b5b265 (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.scm46
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)