Merge pull request #1066 from pi-hole/tweak-s6-service-wrapper

read pids into an array in case of multiple instances of FTL running.…
This commit is contained in:
Adam Warner 2022-04-11 22:31:46 +01:00 committed by GitHub
commit 12ded16443
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 11 additions and 8 deletions

View File

@ -1,8 +1,9 @@
#!/bin/bash
# This script patches all service commands into the appropriate s6- commands
# pi-hole upstream scripts need a 'service' interface. why not systemd? docker said so.
start() {
s6-svc -wu -u -T2500 /var/run/s6/services/$service
restart
}
stop() {
@ -12,16 +13,18 @@ stop() {
restart() {
local pid
# Get the PID of the service we are asking to restart
pid=$(pgrep $service)
# Get the PID(s) of the service we are asking to restart
mapfile -t pids < <(pgrep $service)
# Only attempt to stop the service if it is already running
if [ -n "$pid" ]; then
if [ "${#pids[@]}" -gt 0 ]; then
stop
# Loop until we are certain that the process has been stopped
while test -d /proc/$pid; do
sleep 0.2
for pid in "${pids[@]}"; do
# Loop until we are certain that the process has been stopped
while test -d /proc/$pid; do
sleep 0.2
done
done
fi
@ -30,7 +33,7 @@ restart() {
# Only attempt to start the service if it is not already running
if [ -z "$pid" ]; then
start
s6-svc -wu -u -T2500 /var/run/s6/services/$service
fi
}