Hallo,
wegen den bestehenden Noad-Probleme (hängen bleiben von Noad) basierend auf der Idee von SHO Skript (siehe http://www.vdr-portal.de/board/profile.php?userid=13369), vagabundierende Noad-Instanzen, die keine Aufnahme als Referenz mehr haben, beim shutdown zu töten, hab ich ein weiteres kleines Skript gebastelt.
Der "vdr-hangcheck-Patch" behebt dieses Problem zwar prinzipiell auch (da ist dann ein 30-Minuten-Timeout drin, der noad 30 min nach Ende der Aufnahme killt", allerdings muss man dazu den VDR patchen (siehe hier: Noad 0.6.0 patchen? )
Die Idee den Shutdown-hook das Problem erledigen zu lassen ist daher sehr vergleichba, wobei das Ende der Aufnahme natürlich nicht bekannt ist , daher sollte der Zeitpuffer groß genug sein, den Noad zum verrichten seiner Arbeit hat.
Das Skript gehört in die "S50.noad" unter "/usr/share/vdr/shutdown-hooks/"
Alternativ könnte man Skript natürlich auch alleine alle paar Stunden laufen lassen (als cornjob) um hängende Noads zu entfernen...
Was tut das Skrip?
Das Skript durchsucht die Prozessliste und killt Noad-Instanzen, welche vor mehr als 5 Stunden gestartet wurden. Nach 5h sollten die meisten noad-Prozesse durchlaufen sein...
# Negge: remove noad instances that running longer than 5 hours.
#ps-Liste durchsuchen nach Noad:
for noad in `ps -o pid,etime --no-headers -ww -C noad | sed 's/^ *//' | sed 's/ */|/g'`
do
pid=`echo $noad | cut -d"|" -f1`
etime=`echo $noad | cut -d"|" -f2`
# format von etime ist "dd-hh:mm:ss"
# etime Zerlegen in Tage, Stunden etc...
etime_days=`echo $etime | grep - | cut -d"-" -f1`
etime_hours=`echo $etime | cut -d"|" -f2 | cut -d":" -f1`
etime_min=`echo $etime | cut -d"|" -f2 | cut -d":" -f2`
etime_sec=`echo $etime | cut -d"|" -f2 | cut -d":" -f3`
# wenn e-time größer als 0 Tage dann Process töten oder wenn mehr als 4h59 min
if [ $etime_days -gt 0 ]
then
kill -9 $pid
elif [ $etime_hours -gt 4 ]
then
kill -9 $pid
fi
done
#/Negge
Alles anzeigen
Ich hoffe ich hab da keine Fehler gescriptet und bitte um Tests.
Verbesserungsvorschläge sind auch immer gerne genommen...