Runvdr

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Runvdr aus den VDR Sourcen)
K (Hob den Schutz von „Runvdr“ auf)
 
(35 dazwischenliegende Versionen von 22 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
==Runvdr aus den VDR Sourcen==
+
==Beschreibung==
 
+
{{Box Datei | [[Struktur|$SOURCEDIR]]/VDR/runvdr |
 
<pre>
 
<pre>
 
#!/bin/sh
 
#!/bin/sh
Zeile 9: Zeile 9:
 
# and VDR restarted.
 
# and VDR restarted.
 
#
 
#
# Set the environment variable VDRUSR to the user id you
+
# In order to actually use this script you need to implement
# want VDR to run with. If VDRUSR is not set, VDR will run
+
# the functions DriverLoaded(), LoadDriver() and UnloadDriver()
# as 'root', which is not necessarily advisable.
+
# and maybe adjust the VDRPRG and VDRCMD to your particular
 +
# requirements.
 
#
 
#
 
# Since this script loads the DVB driver, it must be started
 
# Since this script loads the DVB driver, it must be started
# as user 'root'.
+
# as user 'root'. Add the option "-u username" to run VDR
 +
# under the given user name.
 
#
 
#
 
# Any command line parameters will be passed on to the
 
# Any command line parameters will be passed on to the
Zeile 22: Zeile 24:
 
# how to reach the author.
 
# how to reach the author.
 
#
 
#
# $Id: runvdr 1.14 2004/11/21 11:30:00 kls Exp $
+
# $Id: runvdr 1.19 2006/05/14 16:02:05 kls Exp $
  
DVBDIR="../DVB/driver"
 
 
VDRPRG="./vdr"
 
VDRPRG="./vdr"
 
VDRCMD="$VDRPRG -w 60 $*"
 
VDRCMD="$VDRPRG -w 60 $*"
  
LSMOD="`/sbin/lsmod | grep -w '^dvb' | wc -l`"
 
 
KILL="/usr/bin/killall -q -TERM"
 
KILL="/usr/bin/killall -q -TERM"
 +
 +
# Detect whether the DVB driver is already loaded
 +
# and return 0 if it *is* loaded, 1 if not:
 +
function DriverLoaded()
 +
{
 +
  return 1
 +
}
 +
 +
# Load all DVB driver modules needed for your hardware:
 +
function LoadDriver()
 +
{
 +
}
 +
 +
# Unload all DVB driver modules loaded in LoadDriver():
 +
function UnloadDriver()
 +
{
 +
}
  
 
# Load driver if it hasn't been loaded already:
 
# Load driver if it hasn't been loaded already:
if [ $LSMOD -eq 0 ] ; then
+
if ! DriverLoaded; then
   (cd $DVBDIR; make insmod)
+
   LoadDriver
 
   fi
 
   fi
  
 
while (true) do
 
while (true) do
       su $VDRUSR -c "$VDRCMD"
+
       eval "$VDRCMD"
 
       if test $? -eq 0 -o $? -eq 2; then exit; fi
 
       if test $? -eq 0 -o $? -eq 2; then exit; fi
      date
+
       echo "`date` reloading DVB driver"
       echo "restarting VDR"
+
 
       $KILL $VDRPRG
 
       $KILL $VDRPRG
 
       sleep 10
 
       sleep 10
       (cd $DVBDIR; make rmmod; make insmod)
+
       UnloadDriver
       date
+
       LoadDriver
 +
      echo "`date` restarting VDR"
 
       done
 
       done
 
</pre>
 
</pre>
 +
}}
  
==Tipps==
+
Beispiel Funktionen, für den aktuellen DVB Treiber [[DVB Installation v4l-dvb]].
Programme und libs werden nach dem ausführen der runvdr nicht gefunden?
+
  
Die Lösung ist ziehmlich einfach, die Orginal runvdr (siehe oben) setzt die '''Environment''' auf Null.
+
function DriverLoaded()
 +
{
 +
    grep -qse dvb[-_]core /proc/modules
 +
}
 +
 +
# Load all DVB driver modules needed for your hardware:
 +
function LoadDriver()
 +
{
 +
    make -C "[[Struktur|$SOURCEDIR]]/DVB/v4l" load
 +
}
 +
 +
# Unload all DVB driver modules loaded in LoadDriver():
 +
function UnloadDriver()
 +
{
 +
    make -C "[[Struktur|$SOURCEDIR]]/DVB/v4l" unload
 +
}
  
<pre>
+
==Scripts / Tools==
while (true) do
+
# [http://www.informatik.uni-bremen.de/cgi-bin/cgiwrap/mwiesner/download/watchvdr watchvdr]
      su $VDRUSR -c "$VDRCMD"
+
# [ftp://ftp.berlios.de/pub/avm-capi4linux/temp/cooker/dvb]
      ^^^^^^^^^^^^^^^^^^^^^^^
+
# [http://linvdr.org/download/doku/vdr-2/runvdr runvdr von Linvdr]
      if test $? -eq 0 -o $? -eq 2; then exit; fi
+
# [http://www.tja.org/dvb/runvideo-rc runvideo-rc]
</pre>
+
# [http://www.tja.org/dvb/runvideo runvideo]
 +
# [http://sites.inka.de/~bigred/sw/vdr.html Daemon]
 +
# [http://www.leo.org/~loescher/tipsdata/runvdr Perl]
 +
# [ftp://ftp.heise.de/pub/ct/listings/0308-202.zip für mehrere VDR Instanzen]
 +
# [http://www.errror.org/vdr Errror]
 +
# [http://www.udo-richter.de/vdr/scripts.en.html runvdr-extreme]
  
Im Detail.
+
[[Kategorie:Skripte]]
 
+
<pre>
+
bash> echo $PATH
+
/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/games:/opt/gnome/bin:/opt/kde3/bin:/usr/lib/java/jre/bin
+
 
+
bash> su
+
bash> echo $PATH
+
/usr/sbin:/bin:/usr/bin:/sbin:/usr/X11R6/bin
+
 
+
bash> su --help
+
Usage: su [OPTION]... [-] [USER [ARG]...]
+
Change the effective user id and group id to that of USER.
+
 
+
  -, -l, --login              make the shell a login shell
+
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
  -c, --commmand=COMMAND      pass a single COMMAND to the shell with -c
+
  -f, --fast                  pass -f to the shell (for csh or tcsh)
+
  -m, --preserve-environment  do not reset environment variables
+
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
  -p                          same as -m
+
                              ^^^^^^^^^^
+
  -s, --shell=SHELL            run SHELL if /etc/shells allows it
+
      --help    display this help and exit
+
      --version  output version information and exit
+
 
+
A mere - implies -l.  If USER not given, assume root.
+
 
+
Report bugs to <bug-coreutils@gnu.org>.
+
</pre>
+
 
+
Man braucht '''su''' lediglich mitzuteilen, die '''Environment''' nicht zu löschen, das wäre in der runvdr, eines folgender Möglichkeiten.
+
 
+
su - $VDRUSR -c "$VDRCMD"
+
su $VDRUSR -m -c "$VDRCMD"
+
su $VDRUSR -p -c "$VDRCMD"
+
 
+
Startest Du das ganze als "root", ist '''sh''' die bessere Wahl.
+
 
+
sh -c "$VDRCMD"
+
 
+
==Scripts / Tools==
+
{|
+
| [1]
+
| http://www.informatik.uni-bremen.de/cgi-bin/cgiwrap/mwiesner/download/watchvdr
+
|-
+
| [2]
+
| ftp://ftp.berlios.de/pub/avm-capi4linux/temp/cooker/dvb
+
|-
+
| [3]
+
| http://linvdr.org/download/doku/vdr-2/runvdr
+
|-
+
| [4]
+
| http://www.tja.org/dvb/runvideo-rc
+
|-
+
| [5]
+
| http://www.tja.org/dvb/runvideo
+
|-
+
| [6]
+
| http://sites.inka.de/~bigred/sw/vdr.html
+
| Daemon
+
|-
+
| [7]
+
| http://www.leo.org/~loescher/tipsdata/runvdr
+
| in Perl
+
|-
+
| [8]
+
| ftp://ftp.heise.de/pub/ct/listings/0308-202.zip
+
| für mehrere VDR Instanzen
+
|-
+
| [9]
+
| http://www.errror.org:443/~errror/vdr
+
|
+
|}
+

Aktuelle Version vom 5. März 2011, 12:00 Uhr

[Bearbeiten] Beschreibung

Datei
$SOURCEDIR/VDR/runvdr
#!/bin/sh

# runvdr: Loads the DVB driver and runs VDR
#
# If VDR exits abnormally, the driver will be reloaded
# and VDR restarted.
#
# In order to actually use this script you need to implement
# the functions DriverLoaded(), LoadDriver() and UnloadDriver()
# and maybe adjust the VDRPRG and VDRCMD to your particular
# requirements.
#
# Since this script loads the DVB driver, it must be started
# as user 'root'. Add the option "-u username" to run VDR
# under the given user name.
#
# Any command line parameters will be passed on to the
# actual 'vdr' program.
#
# See the main source file 'vdr.c' for copyright information and
# how to reach the author.
#
# $Id: runvdr 1.19 2006/05/14 16:02:05 kls Exp $

VDRPRG="./vdr"
VDRCMD="$VDRPRG -w 60 $*"

KILL="/usr/bin/killall -q -TERM"

# Detect whether the DVB driver is already loaded
# and return 0 if it *is* loaded, 1 if not:
function DriverLoaded()
{
  return 1
}

# Load all DVB driver modules needed for your hardware:
function LoadDriver()
{
}

# Unload all DVB driver modules loaded in LoadDriver():
function UnloadDriver()
{
}

# Load driver if it hasn't been loaded already:
if ! DriverLoaded; then
   LoadDriver
   fi

while (true) do
      eval "$VDRCMD"
      if test $? -eq 0 -o $? -eq 2; then exit; fi
      echo "`date` reloading DVB driver"
      $KILL $VDRPRG
      sleep 10
      UnloadDriver
      LoadDriver
      echo "`date` restarting VDR"
      done


Beispiel Funktionen, für den aktuellen DVB Treiber DVB Installation v4l-dvb.

function DriverLoaded()
{
    grep -qse dvb[-_]core /proc/modules
}

# Load all DVB driver modules needed for your hardware:
function LoadDriver()
{
    make -C "$SOURCEDIR/DVB/v4l" load
}

# Unload all DVB driver modules loaded in LoadDriver():
function UnloadDriver()
{
    make -C "$SOURCEDIR/DVB/v4l" unload
}

[Bearbeiten] Scripts / Tools

  1. watchvdr
  2. [1]
  3. runvdr von Linvdr
  4. runvideo-rc
  5. runvideo
  6. Daemon
  7. Perl
  8. für mehrere VDR Instanzen
  9. Errror
  10. runvdr-extreme