dsa-restart-all-idle-postgres: only restart pg instances that show up in dsa-check...
authorPeter Palfrader <peter@palfrader.org>
Thu, 8 Feb 2018 14:47:32 +0000 (15:47 +0100)
committerPeter Palfrader <peter@palfrader.org>
Thu, 8 Feb 2018 14:47:32 +0000 (15:47 +0100)
modules/postgres/files/dsa-restart-all-idle-postgres

index b057803..c08a175 100755 (executable)
@@ -3,7 +3,8 @@
 # Written by Peter Palfrader
 # Based on code by Tollef Fog Heen <tfheen@err.no> based on code by Peter Palfrader
 #
-# Restart all postgresql clusters when they do not have connections to them.
+# Restart all postgresql clusters that show up in dsa-check-libs when they do
+# not have connections to them.
 
 set -e
 set -u
@@ -45,8 +46,15 @@ handle_cluster() {
   systemctl restart "postgresql@${version}-${name}.service"
 }
 
+tmpfile="$(tempfile)"
+trap "rm -f '$tmpfile'" EXIT
+/usr/lib/nagios/plugins/dsa-check-libs > "$tmpfile" || true
+
 pg_lsclusters -h | while read version name port status; do
   echo "$status" | grep -q --word-regexp online || continue
-  handle_cluster $version $name $port < /dev/null > /dev/null >&2 &
+  pid="$(get_pidfile_value "$version" "$name")"
+  grep -q --word-regexp $pid "$tmpfile" || continue
+
+  handle_cluster $version $name $port < /dev/null > /dev/null 2>&1 &
   disown
 done