Brian Cole (208b4fd9) at 07 Feb 14:01
At https://gitlab.alpinelinux.org/alpine/aports/-/blob/master/main/nfs-utils/nfs.initd#L58 ,
killall -q -HUP rpc.idmapd
attempts to pass the signal as a bare option, but the version of killall on Alpine doesn't support that way of specifying the signal, so it just does this:
# rc-service nfs start
* Starting rpcbind ... [ ok ]
* Starting NFS statd ... [ ok ]
Usage: killall [OPTION]... [--] NAME...
---snip---
I suspect that fixing this is as easy as using
killall -q -s HUP rpc.idmapd
but I'm no expert (I'm just a user trying to run an NFS server on Alpine).
Oh, that's it: I have the psmisc version installed.
[~] 0 $ type -a killall
killall is /usr/bin/killall
[~] 0 $ apk info --who-owns $(command -v killall)
/usr/bin/killall is owned by psmisc-23.4-r0
I thought it was odd that I would be the first to hit this:) And I can confirm that -s
seems to work for both:
[~] 0 $ docker run --rm -ti alpine:edge
Unable to find image 'alpine:edge' locally
edge: Pulling from library/alpine
41dcc117e123: Pull complete
Digest: sha256:1a4c2018cfbab67566904e18fde9bf6a5c190605bf7da0e1d181b26746a15188
Status: Downloaded newer image for alpine:edge
/ # sleep 9999999 &
/ # killall -HUP sleep
[1]+ Hangup sleep 9999999
/ # sleep 9999999 &
/ # killall -s HUP sleep
[1]+ Hangup sleep 9999999
/ # apk add psmisc
fetch https://dl-cdn.alpinelinux.org/alpine/edge/main/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz
(1/4) Installing libintl (0.21-r0)
(2/4) Installing ncurses-terminfo-base (6.3_p20211127-r0)
(3/4) Installing ncurses-libs (6.3_p20211127-r0)
(4/4) Installing psmisc (23.4-r0)
Executing busybox-1.33.1-r4.trigger
OK: 7 MiB in 18 packages
/ # sleep 9999999 &
/ # /usr/bin/killall -HUP sleep
Usage: killall [OPTION]... [--] NAME...
killall -l, --list
killall -V, --version
-e,--exact require exact match for very long names
-I,--ignore-case case insensitive process name match
-g,--process-group kill process group instead of process
-y,--younger-than kill processes younger than TIME
-o,--older-than kill processes older than TIME
-i,--interactive ask for confirmation before killing
-l,--list list all known signal names
-q,--quiet don't print complaints
-r,--regexp interpret NAME as an extended regular expression
-s,--signal SIGNAL send this signal instead of SIGTERM
-u,--user USER kill only process(es) running as USER
-v,--verbose report if the signal was successfully sent
-V,--version display version information
-w,--wait wait for processes to die
-n,--ns PID match processes that belong to the same namespaces
as PID
-Z,--context REGEXP kill only process(es) having context
(must precede other arguments)
/ # /usr/bin/killall -s HUP sleep
[1]+ Hangup sleep 9999999
/ #
Created !28158 (merged) in case it is that simple.
Brian Cole (9a5d16a9) at 04 Dec 21:31
Update nfs.initd to use killall -s
At https://gitlab.alpinelinux.org/alpine/aports/-/blob/master/main/nfs-utils/nfs.initd#L58 ,
killall -q -HUP rpc.idmapd
attempts to pass the signal as a bare option, but the version of killall on Alpine doesn't support that way of specifying the signal, so it just does this:
# rc-service nfs start
* Starting rpcbind ... [ ok ]
* Starting NFS statd ... [ ok ]
Usage: killall [OPTION]... [--] NAME...
---snip---
I suspect that fixing this is as easy as using
killall -q -s HUP rpc.idmapd
but I'm no expert (I'm just a user trying to run an NFS server on Alpine).
I think this should notify @mpolanski if that helps
testing/minikube is currently set to version 0.35.0 from 2019 while current is 1.19.0; the old version is missing a rather lot of features (I noticed because I wanted to use --driver=kvm2
).