Archiv > Development
Runvdr Startet Nicht Immer
clausmuus:
Das Boot Problem hat aber nun nicht's mit den
MarMic:
da ich nach 50ig neustarts nach der echo orgie in runvdr keinen fehler mehr hatte (denke ich wieder an nen bescheidenes timing problem)
habe nun rmcp angewandt und die runvdr so abgeändert -> next try
[code]#!/bin/sh
#
# run vdr
. /etc/init.d/rc.functions
rm -f /tmp/vdr_stop /tmp/vdr_quick_restart
case "$1" in
-k)
touch /tmp/vdr_stop
killproc "/usr/bin/vdr" 10
exit $?
;;
-r)
killproc "/usr/bin/vdr" 10
exit $?
;;
-q)
touch /tmp/vdr_quick_restart
killproc "/usr/bin/vdr" 0
exit $?
;;
-n)
norestart=1
;;
-*)
echo "Usage $0 {-k | -r | -q}"
echo " -k kill vdr"
echo " -r restart vdr"
echo " -q quick restart vdr"
echo " -n no restart if an error occur"
exit 1
;;
esac
#ps | grep "{${0##*/}}" | grep -v grep | grep -q -v $$ && { echo "${0##*/} is already running"; exit; }
ps | grep "{${0##*/}}" | grep -v grep | grep -v $$ && { echo "${0##*/} is already running"; echo $$; ps > /var/log/runvdr.log; exit; }
/etc/vdr/run.d/rc.action start
while (true) do
. /etc/rc.config
export LANG
export LC_ALL=$LANG
export VDR_CHARSET_OVERRIDE
# check if a remote control must be enabled
if ps | grep -v "grep" | grep -q "lircd" && (! test -e /usr/bin/vdr-sxfe || ! grep -sqi "^lirc." /etc/vdr/remote.conf); then
VDR_ARGS="$VDR_ARGS --lirc"
elif ls /etc/vdr/remote.rc* >/dev/null 2>&1 && [ -e /usr/bin/av7110_loadkeys ]; then
VDR_ARGS="$VDR_ARGS --rcu"
fi
# update remote configuration file
cat /etc/vdr/remote.conf.* 2>/dev/null >> /etc/vdr/remote.conf
rm -f /etc/vdr/remote.conf.*
mv /tmp/remote.conf.* /etc/vdr 2>/dev/null
# check if a input device must be train
if ! grep -sqi "^lirc." /etc/vdr/remote.conf && [ -z "${VDR_ARGS%%* --lirc}" ] ||
! grep -sqi "^rcu." /etc/vdr/remote.conf && [ -z "${VDR_ARGS%%* --rcu}" ] ||
! grep -sqi "^XKeySym." /etc/vdr/remote.conf ||
! grep -sqi "^kbd." /etc/vdr/remote.conf
then
echo "xineliboutput.OSD.Size = 720x576" >> /etc/vdr/setup.conf.add
elif grep "xineliboutput.OSD.Size = 720x576" /etc/vdr/setup.conf; then
echo "xineliboutput.OSD.Size = automatic" >> /etc/vdr/setup.conf.add
fi
# update vdr configuration file
while read line; do
sed "/${line%% *}/d" -i /etc/vdr/setup.conf
echo "$line" >> /etc/vdr/setup.conf
done 2>/dev/null < /etc/vdr/setup.conf.add
rm -f /etc/vdr/setup.conf.add
# activate selected channel list
if [ -n "$VDR_CHANNELLIST" ]; then
ln -fs /etc/vdr/channels/$VDR_CHANNELLIST.conf /etc/vdr/channels.conf
fi
# suche Plugins und Parameter zusammen
plugins=""
for plugin in $VDR_PLUGIN_ORDER `ls /usr/lib/vdr/libvdr* 2>/dev/null | sed 's/.*libvdr-([^.]*).*/1/'`; do
if [ -z "`echo "$plugins" | grep -e "-P[^a-z]$plugin " 2>/dev/null`" -a -n "`ls /usr/lib/vdr/libvdr-$plugin* 2>/dev/null`" ]; then
eval options=$VDR_PLUGIN_ARGS_$(echo "$plugin" | sed 's/-/_/g')
plugins="$plugins -P"$plugin $options""
fi
done
# wait for dvb adapters
i=0; while [ $i -lt 10 -a ! -e /tmp/vdr_quick_restart -a $(ls -d /dev/dvb/adapter? 2>/dev/null | wc -l) -lt 0$VDR_DVB_ADAPTER_COUNT ]; do i=$(($i+1)); sleep 1 "#waiting for dvb adapters"; done
update_setting "VDR_DVB_ADAPTER_COUNT" "$(ls -d /dev/dvb/adapter? 2>/dev/null | wc -l)"
starttime=`date +%s`
rm -f /tmp/vdr_quick_restart
# starte vdr
eval /usr/bin/vdr -s /etc/vdr/shutdown.d/rc.action -r /etc/vdr/recording.d/rc.action -w 60 -L /usr/lib/vdr -c /etc/vdr -v /data/tv/tv0 -g /tmp -u root $VDR_ARGS $plugins >>${VDR_STDOUT-/dev/stderr}
test -e /tmp/vdr_stop && break
if [ -e /tmp/vdr_quick_restart ]; then
/etc/vdr/run.d/rc.action quick_restart
else
echo -n "VDR exits at "; date
killproc "/usr/bin/vdr" 0
test -e /tmp/vdr_stop -o "$norestart" = "1" && break
# schnelle wiederholte Neustarts verz
MarMic:
@claus, soll die runvdr.log immer angelegt werden oder nur bei nem fehler? komme mit deinen schreibweisen als nicht klar?!
weil derzeit wird sie nicht angelegt aber es tut auch noch alles!
clausmuus:
die wird nur angelegt wenn der Fehler auftritt.
dieser Part prüft ob die runvdr bereits läuft:
ps | grep "{${0##*/}}" | grep -v grep | grep -v $$
das darauf folgende && besagt das der folgende Befehl nur ausgeführt werden soll wenn die Bedingung davor zutraf.
Und dieser Part wird dann ausgeführt (also wenn bereits eine runvdr läuft):
{ echo "${0##*/} is already running"; echo $$; ps > /var/log/runvdr.log; exit; }
die geschweiften Klammern sind nötig damit mehr als ein befehl hinter dem && stehen kann.
Du kannst das ganz einfach testen, indem Du nach erfolgreichem Start den Befehl "runvdr" aufrufst. Dann bekommst Du den Fehler angezeigt und die verantwortliche ps Zeile ausgegeben. Ausserdem wird die runvdr.log angelegt)
Claus
MarMic:
ja hatte ich bereits getestet auf die idee bin ich auch gekommen.
@claus, habe nun gefühlt 100mal rebootet -> keinen fehler mehr :-(
aber grossartig anders ist die runvdr ja nicht geworden (siehe oben)
einzige was anders ist:
durch meine echos mit dennen es geklappt hat
und nun durch die änderung von dir
wird die runvdr auf der festplatte gespeichert und nicht mehr durch aufs gemountet, oder?
seitdem habe ich bis jetzt noch kein problem festgestellt :-(
mich verwundert auch das hier:
--- Code: ---===done===
Setting up setup menu:
rm: can't remove '/usr/share/doc/fritzbox/setting': No such file or directory
rm: can't remove '/usr/share/doc/lcdproc/setting': No such file or directory
rm: can't remove '/usr/share/doc/setup/setting': No such file or directory
rm: can't remove '/usr/share/doc/xineliboutput/setting': No such file or directory
--- End code ---
beim nächsten mal steht drin
--- Code: ---===done===
Setting up setup menu:
===done===
Starting webserver:
===done===
Setting up web setup menu:
rm: can't remove '/usr/share/doc/lcdproc/setting': No such file or directory
===done===
--- End code ---
alles sehr sehr komisch...
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version