From 6ee6eea1fb87f7bb74ab68a2fd3d7b49f92569fa Mon Sep 17 00:00:00 2001 From: DL6ER Date: Tue, 21 Jul 2020 21:13:40 +0200 Subject: [PATCH 1/4] Use pkill instead of the somewhat fragile combination of kill + pidof. This solves some issues especially when there are many TCP workers floating around. Signed-off-by: DL6ER --- pihole | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/pihole b/pihole index b0ba8473..6e06e85d 100755 --- a/pihole +++ b/pihole @@ -20,8 +20,6 @@ PI_HOLE_BIN_DIR="/usr/local/bin" readonly colfile="${PI_HOLE_SCRIPT_DIR}/COL_TABLE" source "${colfile}" -resolver="pihole-FTL" - webpageFunc() { source "${PI_HOLE_SCRIPT_DIR}/webpage.sh" main "$@" @@ -107,19 +105,19 @@ restartDNS() { # Determine if we should reload or restart if [[ "${svcOption}" =~ "reload-lists" ]]; then # Reloading of the lists has been requested - # Note: This will NOT re-read any *.conf files + # Note 1: This will NOT re-read any *.conf files # Note 2: We cannot use killall here as it does # not know about real-time signals - svc="kill -SIGRTMIN $(pidof ${resolver})" + svc="pkill -RTMIN pihole-FTL" str="Reloading DNS lists" elif [[ "${svcOption}" =~ "reload" ]]; then # Reloading of the DNS cache has been requested # Note: This will NOT re-read any *.conf files - svc="killall -s SIGHUP ${resolver}" + svc="pkill -HUP pihole-FTL" str="Flushing DNS cache" else # A full restart has been requested - svc="service ${resolver} restart" + svc="service pihole-FTL restart" str="Restarting DNS server" fi From 17aabf26f7859600bd3f234530f01c85043c3d59 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Tue, 21 Jul 2020 21:19:19 +0200 Subject: [PATCH 2/4] Also use pkill/pgrep in the FTL service script Signed-off-by: DL6ER --- advanced/Templates/pihole-FTL.service | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/advanced/Templates/pihole-FTL.service b/advanced/Templates/pihole-FTL.service index 6af449f3..f0743b49 100644 --- a/advanced/Templates/pihole-FTL.service +++ b/advanced/Templates/pihole-FTL.service @@ -12,19 +12,8 @@ FTLUSER=pihole PIDFILE=/run/pihole-FTL.pid -get_pid() { - # First, try to obtain PID from PIDFILE - if [ -s "${PIDFILE}" ]; then - cat "${PIDFILE}" - return - fi - - # If the PIDFILE is empty or not available, obtain the PID using pidof - pidof "pihole-FTL" | awk '{print $(NF)}' -} - is_running() { - ps "$(get_pid)" > /dev/null 2>&1 + pgrep -o "pihole-FTL" > /dev/null 2>&1 } @@ -63,7 +52,7 @@ start() { # Stop the service stop() { if is_running; then - kill "$(get_pid)" + pkill -o pihole-FTL for i in {1..5}; do if ! is_running; then break @@ -76,7 +65,7 @@ stop() { if is_running; then echo "Not stopped; may still be shutting down or shutdown may have failed, killing now" - kill -9 "$(get_pid)" + pkill -o -9 pihole-FTL exit 1 else echo "Stopped" From 8f7f0881c636e54ad5cf610f4388f3dc8bdb6820 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Tue, 21 Jul 2020 21:21:24 +0200 Subject: [PATCH 3/4] Add /usr/sbin to cronjob PATH Signed-off-by: DL6ER --- advanced/Templates/pihole.cron | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/advanced/Templates/pihole.cron b/advanced/Templates/pihole.cron index ba89efdb..ecd1e808 100644 --- a/advanced/Templates/pihole.cron +++ b/advanced/Templates/pihole.cron @@ -18,19 +18,19 @@ # early morning. Download any updates from the adlists # Squash output to log, then splat the log to stdout on error to allow for # standard crontab job error handling. -59 1 * * 7 root PATH="$PATH:/usr/local/bin/" pihole updateGravity >/var/log/pihole_updateGravity.log || cat /var/log/pihole_updateGravity.log +59 1 * * 7 root PATH="$PATH:/usr/sbin:/usr/local/bin/" pihole updateGravity >/var/log/pihole_updateGravity.log || cat /var/log/pihole_updateGravity.log # Pi-hole: Flush the log daily at 00:00 # The flush script will use logrotate if available # parameter "once": logrotate only once (default is twice) # parameter "quiet": don't print messages -00 00 * * * root PATH="$PATH:/usr/local/bin/" pihole flush once quiet +00 00 * * * root PATH="$PATH:/usr/sbin:/usr/local/bin/" pihole flush once quiet @reboot root /usr/sbin/logrotate /etc/pihole/logrotate # Pi-hole: Grab local version and branch every 10 minutes -*/10 * * * * root PATH="$PATH:/usr/local/bin/" pihole updatechecker local +*/10 * * * * root PATH="$PATH:/usr/sbin:/usr/local/bin/" pihole updatechecker local # Pi-hole: Grab remote version every 24 hours -59 17 * * * root PATH="$PATH:/usr/local/bin/" pihole updatechecker remote -@reboot root PATH="$PATH:/usr/local/bin/" pihole updatechecker remote reboot +59 17 * * * root PATH="$PATH:/usr/sbin:/usr/local/bin/" pihole updatechecker remote +@reboot root PATH="$PATH:/usr/sbin:/usr/local/bin/" pihole updatechecker remote reboot From 527fc3c5cf6372bc52de4a94064a23c7d88bdd9d Mon Sep 17 00:00:00 2001 From: DL6ER Date: Tue, 21 Jul 2020 21:39:59 +0200 Subject: [PATCH 4/4] Also pidof -> pgrep in gravity.sh Signed-off-by: DL6ER --- gravity.sh | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/gravity.sh b/gravity.sh index 9d4c7bee..636c9872 100755 --- a/gravity.sh +++ b/gravity.sh @@ -43,8 +43,6 @@ optimize_database=false domainsExtension="domains" -resolver="pihole-FTL" - # Source setupVars from install script setupVars="${piholeDir}/setupVars.conf" if [[ -f "${setupVars}" ]];then @@ -284,7 +282,7 @@ gravity_CheckDNSResolutionAvailable() { fi # Determine error output message - if pidof ${resolver} &> /dev/null; then + if pgrep pihole-FTL &> /dev/null; then echo -e " ${CROSS} DNS resolution is currently unavailable" else echo -e " ${CROSS} DNS service is not running" @@ -746,7 +744,7 @@ gravity_Cleanup() { fi # Only restart DNS service if offline - if ! pidof ${resolver} &> /dev/null; then + if ! pgrep pihole-FTL &> /dev/null; then "${PIHOLE_COMMAND}" restartdns dnsWasOffline=true fi