Ah, danke. Tatsächlich.
MODULES=`lsmod | awk '/^dvb/ {gsub(/,/,"\n", $4); print $4}' | uniq | tac | grep -v "^$"`
Und das ergibt manuell: dvb_usb_technisat_usb2 dvb_usb dvb_usb_technisat_usb2
ausserdem dvb_core
Er tut es also doch. Von wegen "warum sollte er?".
Das ist dann wohl der Grund, warum das Device abgeschaltet und wieder angeschaltet wurde.
Ich versuchs mal mit ein delay zwischen unload und load. Ja, da ist tatsächlich ein "Sleep 2" das sind genau die 2 sek, die man im Log sieht.
Allerdings ist folgendes ziemlich unlogisch:
get_modulenames
[ -z "$MODULES" ] && load_dvb_modules
Denn: Wenn die Module nicht geladen sind, findet lsmod auch keine.
Sind die Module geladen, dann ist $MODULES nicht leer und die Module können geladen werden. Brauchen sie aber nicht, weil sie bereits geladen sind.
Ich habe das jetzt mal manuell eingegeben:
MODULES="dvb_usb_technisat_usb2 dvb_usb dvb_usb_technisat_usb2 dvb_core"
Wie kann ich folgendes so ändern, dass ich pro Modul einen Resultcode logge? oder stderr, falls nicht leer?
logger -t runvdr "Loading Modules: $MODULES"
for MODULE in $MODULES; do
modprobe $MODULE >/dev/null 2>&1
done
Bin mir noch nicht sicher, ob das so nun wirklich tut. Lassen wir es mal ein weilchen laufen.