#!/bin/bash
# 
############################################################################
#
# Skript zur Überwachung der Systemlast
#
# Wenn die Systemlast kleiner ist als der Wert,
# welcher unter der Variable "NOTIFY" definiert ist,
# dann muss davon ausgegangen werden,
# dass beim Playout irgendetwas schief gelaufen ist.
# Aus diesem Grund wird dann der Prozess Chromium abgeschossen.
#
# Sobald der Prozess Chromium nicht mehr läuft, wird dieser Prozess über
# das Skript "stvping.sh" neu gestartet.
# 
# Alles Weitere ist im Skript "stvping.sh" dokumentiert.
#
# Die Basis dieses Skriptes ist entnommen von
# https://bash.cyberciti.biz/monitoring/monitor-unix-linux-system-load/
#
############################################################################

# Limite für die minimale Systemlast setzen
NOTIFY="0.01"

# Scriptvariablen
TRUE="1"
TEMPFILE="$(mktemp)"

# Auslesen der Systemlast (letzte Minute)
F1M=`uptime | awk -F'[a-z]:' '{ print $2 }' | cut -d, -f1 | sed 's/ //g'`
# Auslesen der Systemlast (letzte 5 Minuten)
F5M=`uptime | awk -F'[a-z]:' '{ print $2 }' | cut -d, -f2 | sed 's/ //g'`
# Auslesen der Systemlast (letzte 10 Minuten)
F15M=`uptime | awk -F'[a-z]:' '{ print $2 }' | cut -d, -f3 | sed 's/ //g'`


# Überprüfen, ob die Systemlast der letzten Minute
# den Triggerwer unterschritten hat.
RESULT=$(echo "$F1M < $NOTIFY" | bc)

# Wenn dem so ist, dann soll der Browser abgeschossen werden.
if [ "$RESULT" == "$TRUE" ]; then
	killall chromium	
	echo "`date`  Systemlast zu gering, Chromium gekillt" >> /var/log/stv.log
else
	echo "`date`  Systemlast: $F1M $F5M $F15M" 1>&2
fi

# temporäre Datei entfernen
rm -f "$TEMPFILE"
