+#!/bin/bash
+
+# When the system boots, systemd-resolved seems to recreate /run/systemd/resolve,
+# or something, because the bindmounts to that directory do not always exist
+# for units starting up at the same time. Anyways, removing and creating that
+# directory definitely has the effect of deleting the bindmount, so
+# here I solve for that ever happening.
+
+if ! test "$BASH_VERSION"; then echo "error: shell is not bash" >&2; exit 1; fi
+shopt -s inherit_errexit 2>/dev/null ||: # ignore fail in bash < 4.4
+set -eE -o pipefail
+trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" exit status: $?, PIPESTATUS: ${PIPESTATUS[*]}" >&2' ERR
+
+if (( $# == 0 )); then
+ echo error: expected service argument >&2
+ exit 1
+fi
+
+[[ $EUID == 0 ]] || exec sudo -E "${BASH_SOURCE[0]}" "$@"
+
+sleep 5
+while true; do
+ sleep 20
+ for unit; do
+ pid=$(systemctl show --property MainPID --value $unit 2>/dev/null ||:)
+ case $pid in
+ [1-9]*)
+ if ! nsenter -t $pid -m timeout 20 mountpoint /run/systemd/resolve &>/dev/null; then
+ echo mail bind restart of $unit
+ timeout 60 systemctl restart $unit ||:
+ fi
+ ;;
+ esac
+ done
+done