Runvdr

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
K (Scripts / Tools: Kategorie:VDR != Kategorie:Skripte)
(http://www.linuxtv.org/pipermail/vdr/2006-May/009220.html)
Zeile 1: Zeile 1:
==Runvdr aus den VDR Sourcen==
+
==Beschreibung==
 
+
{{Box Datei | [[Struktur|$SOURCE]]/VDR/runvdr |
 
<pre>
 
<pre>
 
#!/bin/sh
 
#!/bin/sh
 
+
#
 
# runvdr: Loads the DVB driver and runs VDR
 
# runvdr: Loads the DVB driver and runs VDR
 
#
 
#
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.16 2006/02/04 15:20:48 kls Exp kls $
  
DVBDIR="../DVB/driver"
 
 
VDRPRG="./vdr"
 
VDRPRG="./vdr"
 
VDRCMD="$VDRPRG -w 60 $*"
 
VDRCMD="$VDRPRG -w 60 $*"
Zeile 30: Zeile 31:
 
LSMOD="`/sbin/lsmod | grep -w '^dvb' | wc -l`"
 
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==
+
Programme und libs werden nach dem ausführen der runvdr nicht gefunden?
+
 
+
Die Lösung ist ziemlich einfach, die Orginal runvdr (siehe oben) setzt die '''Environment''' auf Null.
+
 
+
<pre>
+
while (true) do
+
      su $VDRUSR -c "$VDRCMD"
+
      ^^^^^^^^^^^^^^^^^^^^^^^
+
      if test $? -eq 0 -o $? -eq 2; then exit; fi
+
</pre>
+
 
+
Im Detail.
+
 
+
<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==
 
==Scripts / Tools==

Version vom 3. Mai 2006, 05:45 Uhr

Beschreibung

Datei
$SOURCE/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.16 2006/02/04 15:20:48 kls Exp kls $

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

LSMOD="`/sbin/lsmod | grep -w '^dvb' | wc -l`"
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


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