#!/bin/bash
#
# ulsstop
#
# Beim Stoppen des ULS-Dienstes das Ausführen
# von flush_test_values verhindern und
# auf Beendigung der laufenden Prozesse warten.
#
# Allen '/bin/bash -l', die über 'script2uls'
# gestartet wurden ein HUP senden
#
###############################################
#
if [[ -f /etc/uls/uls.conf ]]
 then
  . /etc/uls/uls.conf
fi
#
cd $(dirname ${ULS_TMP_PATH:=/var/tmp/uls})
touch $ULS_TMP_PATH.servershutdowninitiated
#
# Nur Dienst stoppen oder Rechner herunterfahren?
[[ "$(systemctl is-system-running)" = "running" ]] && exit 0
#
# Ab hier Aktionen, die beim Rebooten oder Ausschalten ausgeführt werden sollen
#
ps -ef | awk '
/\/usr\/bin\/script2uls/    { s[$2] = 1 }
/\/usr\/bin\/asciinema rec/ { p[$2] = $3 }
/\/usr\/bin\/script/        { p[$2] = $3 }
$8$9$10$11$12 == "sh-c/bin/bash-l" { p2[$2] = $3 }
$8$9$10 == "/bin/bash-l"    { b[$2] = $3 }
END {
  for( i in b )
  { if( s[p[b[i]]] == 1 || s[p[p2[b[i]]]] == 1 )
      print i
  }
}' | while read p
 do
  kill -s SIGTERM $p
  kill -s SIGHUP $p
done
#
sleep 1
/usr/bin/flush_test_values -S
#
Z=70
while [[ $Z -gt 0 ]]
 do
  if ps -efa | grep -v grep | fgrep -q '/usr/bin/flush_test_values'
   then
    Z=$(( $Z - 1 ))
    sleep 1
  else
    exit 0
  fi
done
exit 0
