sshguard - start-stop-daemon does not kill child processes
service sshguard stop leaves two processes still running
After service sshguard start:
2752 root 0:00 {sshguard} /bin/sh /usr/sbin/sshguard -i /var/run/sshguard.pid -l /var/log/messages
2753 root 0:00 {sshguard} /bin/sh /usr/sbin/sshguard -i /var/run/sshguard.pid -l /var/log/messages
2754 root 0:00 /usr/libexec/sshg-parser
2755 root 0:00 /usr/libexec/sshg-blocker -a 30 -i /var/run/sshguard.pid -p 120 -s 1800 -N 128 -n 32
2757 root 0:00 {sshguard} /bin/sh /usr/sbin/sshguard -i /var/run/sshguard.pid -l /var/log/messages
2758 root 0:00 {sshg-fw-nft-set} /bin/sh /usr/libexec/sshg-fw-nft-sets
After service sshguard stop:
2753 root 0:00 {sshguard} /bin/sh /usr/sbin/sshguard -i /var/run/sshguard.pid -l /var/log/messages
2754 root 0:00 /usr/libexec/sshg-parser
You can see two processes still remain.
I think this might have something to do with /bin/sh
I install bash and changed /usr/sbin/sshguard
line 1 from #!/bin/sh
to #!/bin/bash
and the start-stop-daemon kills all processes as expected.
From the source repo there is a fix here: https://bitbucket.org/sshguard/sshguard/commits/540c08c
However, I tried this and it makes the problem worse.
Maybe sshguard should depend on bash and all related scripts use be modified to use bash instead of sh?
Alpine 3.10.2 and sshguard-2.2.0-r0