runvdr extreme Geschrieben von: Udo Richter Projekt Homepage: http://www.udo-richter.de/vdr/scripts.html#runvdr Siehe Datei COPYING für Lizenz-Informationen Über -------------------------------------------------------------------------- runvdr extreme ist ein runvdr-Skript, genau wie das runvdr-Skript aus der VDR-Distribution. Es ist nur rund 17 mal größer. Einige der Features von runvdr extreme: - Lädt die Grundkonfiguration aus runvdr.conf - Die gesamte Konfiguration kann per Kommandozeile gesetzt werden - Alle VDR-Optionen werden unterstützt - Verwaltet runvdr.pid Datei, reagiert auf Signale - Startet VDR im Falle von Fehlern neu - Kommandos, um VDR neu zu starten und DVB-Treiber neu zu laden - Beim VDR-Neustart wird die Konfiguration erneut gelesen - Vermeidet endlose Schleifen, wenn VDR sofort stirbt - Setzt Terminal zurück nachdem VDR beendet wurde - Starten von Wrapper-Programmen zum Debuggen - Wartet bis der VDR-Prozess beendet wurde, hartes Beenden nach Timeout - Kommandozeilenhilfe - Kann Konsole umschalten - Kann Landessprache für VDR setzen - Unterstützt Pluginsetup-Plugin optional Dazu kommt runvdr-conf.d: - Lädt Konfigurationsdateien alphabetisch aus einem Verzeichnis, vergleichbar mit init.d-Verzeichnissen. - Kommandozeilentool zum Aktivieren/Deaktivieren von Plugins - Festlegen der Ladereihenfolge - Optional: Menüsteuerung per osdserver-Plugin Schnellstart -------------------------------------------------------------------------- - Kopiere runvdr nach /usr/local/bin/ oder wo-auch-immer-du-magst - Kopiere runvdr.conf.example nach /etc/runvdr.conf, wenn runvdr als Server laufen soll, oder nach ~/.runvdr.conf, wenn runvdr durch einen Benutzer gestartet werden soll. - Bearbeite /etc/runvdr.conf nach deinem Bedarf Die runvdr.conf ist größtenteils selbsterklärend. Alle Optionen sind auch per Kommandozeile verfügbar, siehe runvdr --help. Für das init-Skript (Debian): - Kopiere init.d.runvdr.Debian nach /etc/init.d/runvdr - Benutze update-rc.d um die Start-Runlevel zu konfigurieren. Für runvdr-conf.d: - Kopiere runvdr-conf.d nach /usr/local/bin/ - /etc/runvdr/ anlegen und mit Dateien nach Vorbild der skeleton.example füllen - INCLUDE /etc/runvdr/conf.d/* in runvdr.conf aufnehmen - runvdr-conf.d show|enable|disable zum Konfigurieren der Plugins verwenden - (Optional) "runvdr-conf.d osdserver" in commands.conf hinzufügen. Details -------------------------------------------------------------------------- Die Optionen werden in dieser Reihenfolge ausgewertet: 1. Kommandozeilenoptionen haben höchste Priorität. 2. runvdr.conf auf Kommandozeile mit -C oder --runvdr-conf angegeben 3. Wenn kein -C und kein --runvdr-conf angegeben, benutze ~/.runvdr.conf 4. Wenn kein -C und kein --runvdr-conf un kein ~/.runvdr.conf, benutze /etc/runvdr.conf 5. Wenn keine der obigen Dateien existiert, benutze runvdr-Defaults Nur eine runvdr.conf wird normalerweise geladen, und nur eine -C Option wird ausgewertet. Man kann aber den Inhalt einer runvdr.conf in einer anderen runvdr.conf laden, wenn man die INCLUDE-Direktive verwendet. Man kann zum Beispiel /etc/runvdr.conf aus der Datei ~/.runvdr.conf heraus laden, um für den aktuellen Benutzer einige Einstellungen zu überschreiben. Die INCLUDE-Direktive kann auch mehrere Konfigurationsdateien laden. So kann man z.B. mit INCLUDE /etc/runvdr/conf.d/* ein ganzes Verzeichnis von Konfigurationsdateien laden. Beispielsweise könnten in so einem Verzeichnis für jedes zu ladende Plugin eine Datei (oder Symlink) mit dem Einzeiler "AddPlugin xxx" liegen. Plugins, die durch die AddPlugin-Direktive in der conf-Datei oder die --plugin oder -P Option geladen werden, können von der Plugin-Liste wieder entfernt werden, wenn man "AddPlugin -name", --plugin="-name" oder -P-name verwendet. Der name-Teil wird dabei als Muster für den Anfangsteil des Plugin- Namens verwendet, alle Plugins, die auf "name*" passen, werden entfernt. Insbesondere hebt "AddPlugin -" und -P- die gesamte bisherige Plugin-Liste auf. Der selbe Mechanismus funktioniert auch beim -D Device-Parameter. Um Parameter an VDR direkt weiter zu geben, ohne dass runvdr sie interpretiert, kann -- als Parameter angegeben werden. Alle Parameter nach -- werden unverändert an VDR weiter gegeben. So gibt "runvdr -- --help" die Hilfestellung von VDR aus, und nicht die Hilfestellung von runvdr. runvdr-conf.d -------------------------------------------------------------------------- Mit runvdr-conf.d steht ein (optionales) Tool zur Verfügung, das das Verwalten der Plugins erleichtern soll. Es funktioniert nach dem init.d Prinzip, bei dem in einem Verzeichnis mehrere symbolische Links auf Dateien abgelegt werden, die in alphabetischer Reihenfolge abgearbeitet werden. Im Falle von runvdr-conf.d legt man pro zu ladendem Plugin eine eigene Konfigurationsdatei nach Vorbild der skeleton.example in /etc/runvdr/ ab. Geladen werden Plugins, deren symbolischer Link unter /etc/runvdr/conf.d liegt. Dazu muss in der runvdr.conf die passende INCLUDE-Zeile aktiviert werden. Folgende Befehle stehen zur Verfügung, um die aktiven Plugins zu verwalten: runvdr-conf.d show [name] Zeigt alle Plugins bzw. ein Plugin an, inklusive Name und Ladepriorität. 'name' ist der Dateiname im Verzeichnis /etc/runvdr/. runvdr-conf.d enable name [--prio XX] Aktiviere Plugin für nächsten Neustart. Verwendet Default-Priorität oder die angegebene Priorität. Dazu wird ein symbolischer Link auf die Datei /etc/runvdr/name unter /etc/runvdr/conf.d/XXname abgelegt. runvdr-conf.d disable name Deaktiviert ein Plugin ab dem nächsten Neustart, d.h. löscht den Link unter /etc/runvdr/conf.d/XXname. runvdr-conf.d osdserver [--debug] Verbindet mit OSD-Server Plugin und erlaubt das Konfigurieren der Plugins per VDR OSD. Von dort können Plugins aktiviert und deaktivert werden, und die Ladepriorität gesetzt werden. Ohne --debug kehrt runvdr-conf.d sofort zurück und trennt sich von der Standard-Ein/Ausgabe, kann also von der commands.conf direkt aufgerufen werden. Mit --debug wird die OSD-Server Kommunikation ausgegeben. Voraussetzungen -------------------------------------------------------------------------- Unix-Kommandos, die runvdr benutzt: Kommando Debian-Paket pgrep procps ps procps kill procps sleep coreutils date coreutils chvt console-tools getopt util-linux setterm util-linux Beispiele -------------------------------------------------------------------------- Wenn die Standardeinstellungen in /etc/runvdr.conf vorgenommen sind, hier ein paar coole Dinge, die man tun kann: Starte VDR im Hintergrund (zum Beispiel mit TERMINAL=/dev/tty8 in conf-Datei): runvdr & Stoppe VDR und das runvdr-Skript: runvdr --terminate Dito, aber warte bis VDR beendet ist: runvdr --terminate --wait Starte den bereits laufenden VDR-Prozess neu, weil er hängt, oder weil die runvdr.conf geändert wurde: runvdr --restart Dito, aber lade auch die DVB-Treiber neu: runvdr --dvb-restart Benutze den frich neu übersetzten VDR zum ersten mal: runvdr --vdr=/usr/src/vdr-1.5.0/vdr --lib=/usr/src/vdr-1.5.0/PLUGINS/lib Zum Debuggen, starte VDR ohne Terminalumlenkung: runvdr --terminal="" --switchterminal="" Lade alle Plugins, und zusätzlich das hello-Plugin: runvdr -P hello Lade nur das hello-Plugin: runvdr -P- -P hello Lade alle Plugins, aber nicht das hello-Plugin: runvdr -P-hello Starte einen Testlauf von runvdr, um zu sehen was passiert: runvdr --wrapper=echo Starte eine Debugging-Session: runvdr --wrapper="gdb --args" Starte mit einer komplett abweichenden Konfiguration: runvdr --runvdr-conf="/etc/runvdr-debugging.conf"