ich habe mir mal ein Script welches aus einem anderen Thread stammt und für Oscam gedacht war auf meine CCam Konfiguration umgeschrieben,
um mit cccam start, cccam stop und cccam restart eine einfachere Anwendung zu ermöglichen.
Ich habe auch die rc.local angepasst um es automatisch starten zu lassen.
Mit cccam 2.1.1 funktioniert auch alles bestens.
start, stop und restart kein Problem.
Ersetze ich die cccam.x86 jedoch mit der 2.1.3 oder 2.1.4-Version wird diese zwar nach einem reboot gestartet,
wenn ich sie dann stoppe funktioniert ein erneuter start bzw restart jedoch nicht.
Führe ich dann /emu/cccam/CCcam.x86 aus startet diese auch wieder.
Es kommt keine fehlermeldung. Wenn ich z.b. cccam restart eingebe stoppt cccam, startet dann aber nicht mehr, obwohl das angezeigt wird. Wie gesagt bei cccam 2.1.1 funzt alles wunderbar. Nur bei den neueren Versionen nicht. Das ist es was mich so wundert.
naja könnte vielleicht daran liegen das zwischen stop und start nicht gewartet wird bis der prozess auch wirklich beendet wurde (das dauert oft ein bischen)
also 2 möglichkeiten:
komisch. bei mir funktioniert das..
poste bitte noch mal das script wie du es jetzt hast
oder vielleicht den "sleep 2" auf "sleep 5" hoch setzen vielleicht brauch er ein bischen mehr zeit
ansonsten kannst du es auch mit debug starten um zu sehen was das script macht: bash -x /bin/cccam restart
(ausgabe bitte auch in
Code:
posten)
hier noch eine überarbeitete und leicht veränderte version des scripts:
[code]#!/bin/sh
CAMNAME="CCcam Server"
CAMBIN="CCcam.x86"
CAMBINPATH="/emu/cccam"
# end
# This method starts CCcam
start_cam () {
PID="$(ps auxw | grep -v grep | grep -v $0 | grep -w $CAMBIN | awk {'print $2'})"
if [ ! -z "$PID" ]; then
echo "$CAMNAME : ist bereits gestartet"
else
$CAMBINPATH/$CAMBIN &
if [ $? -ne "0" ]; then
echo "$CAMNAME : Fehler beim starten!"
else
echo "$CAMNAME : gestartet"
fi
fi
}
# This method stops CCcam
stop_cam () {
PID="$(ps auxw | grep -v grep | grep -v $0 | grep -w $CAMBIN | awk {'print $2'})"
if [ -z "$PID" ]; then
echo "$CAMNAME : ist bereits beendet"
else
pkill $CAMBIN
sleep 2
PID="$(ps auxw | grep -v grep | grep -v $0 | grep -w $CAMBIN | awk {'print $2'})"
if [ -z "$PID" ]; then
echo "$CAMNAME : beendet"
else
kill -9 $CAMBIN
killall -9 $PID >/dev/null 2>&1
echo "$CAMNAME : gekillt"
fi
fi
}
case "$1" in
start)
echo "[SCRIPT] $1: $CAMNAME"
start_cam
;;
stop)
echo "[SCRIPT] $1: $CAMNAME"
stop_cam
;;
restart)
echo "Restarting $CAMNAME"
stop_cam
sleep 2
start_cam
;;
*)
echo "Usage: $0 {start|stop|restart}"
;;
esac
exit 0
vorraussetzung: apt-get install psmisc
(pkill und pgrep setzen das paket "procps" vorraus)
hast du das script /bin/cccam denn überhaupt ausführbar gemacht? -> chmod 755 /bin/cccam
oben im script steht "#!/bin/bash" das ist der interpret der den code verarbeiten soll. wenn man das script mit "bash /bin/cccam" ausführt ist das quasi überflüssig aber wenn man es eben direkt ausführt "/bin/cccam" wird besagte erste zeile beachtet
wenn es mit " bash /bin/cccam restart " funktioniert aber nicht mit " /bin/cccam restart " aber die rechte passen usw bin ich jetzt leider auch überfragt..
glaube zwar nicht das es was bringen würde aber was ist denn wenn du ipc installierst und die script von ipc benutzt? wenn es damit dann funktioniert weiss ich zwar nicht woran es lag aber dann ginge es zumindest
Vom IPC wollte ich eigentlich weg und nur das nötigste auf dem Server haben.
Außerdem wollte ich mich halt auch mal n bisschen in die Materie reindenken.
Ist nur mein Test-Futro, auf meinem normalen habe ich IPC und da läuft auch alles mit cccam 2.1.3.
Code:
root@debian:~# bash -x /bin/cccam start
+ CAMNAME='CCcam Server'
+ CAMBIN=CCcam.x86
+ CAMBINPATH=/emu/cccam
+ case "$1" in
+ echo '[SCRIPT] start: CCcam Server'
[SCRIPT] start: CCcam Server
+ start_cam
++ grep -v /bin/cccam
++ grep -v grep
++ grep -w CCcam.x86
++ ps auxw
++ awk '{print $2}'
+ PID=
+ '[' '!' -z '' ']'
+ '[' 0 -ne 0 ']'
+ echo 'CCcam Server : gestartet'
CCcam Server : gestartet
+ exit 0
root@debian:~#[COLOR=#ff0000] + /emu/cccam/CCcam.x86[/COLOR]
root@debian:~# cccam stop
[SCRIPT] stop: CCcam Server
CCcam Server : beendet
root@debian:~# cccam start
[SCRIPT] start: CCcam Server
CCcam Server : gestartet
root@debian:~# cccam stop
[SCRIPT] stop: CCcam Server
CCcam Server : ist bereits beendet
root@debian:~#
Das rote schreibt der von alleine dahin.
An dem anderen kannst du sehen das er zwar hinschreibt "CCcam Server : gestartet",
es ist jedoch gar nicht gestartet.
Muss n Fehler in der Matrix sein.....
mit "bash /bin/cccam start" geht es übrigens auch....
naja das rot kann ne kleine verzögerung sein das er es erst gestartet hat nachdem eigentlich alles bereits durchgerattet ist. wegen des "&" hinter der zeile wird der befehl im hintergrund abgewickelt und das script nicht aufgehalten
beim rest sagt er am ende das es bereits beendet wurde. da weiss ich aber nicht in was für einem zeitabstand du das alles ausgeführt hast da kann es wie gesagt etwas dauern bis es auch wirklich gestartet ist und somit auch noch nicht im "ps aux" auftaucht. im sekunden takt starten stoppen usw ist nicht normal und kommt auch nicht in der praxis vor. wie lange cccam zum starten brauch kommt unter anderem auch darauf an wieviele daten cccam einlesen muss also grösse der cfg und zum beispiel channelinfo usw und natürlich auch wie schnell der rechner/cf is
Ich habe dem schon genügend Zeit gegeben, daran wird es nicht liegen.
Mit cccam 2.1.1 und "cccam start"
oder mit cccam 2.1.3 und "bash /bin/cccam start"
oder auch cccam 2.1.3 und "bash cccam start"
geht es in sekundenschnelle.
Nur halt mit cccam 2.1.3 und "cccam start" nicht.
Ist auch nicht weiter schlimm, kann den Befehl ja mit bash eingeben;
ist halt nur komisch und hätte ich gerne gewußt, wieso das so ist.
was auch komisch ist:
bash cccam start geht
bash cccam stop geht nicht (Dienst wird nicht beendet)
bash cccam restart geht nicht (Dienst wird auch nicht beendet)
bash /bin/cccam start geht
bash /bin/cccam stop geht
bash /bin/cccam restart geht
Meine aktuelles script sieht so aus:
Code:
#!/bin/sh
CAMNAME="CCcam Server"
CAMBIN="CCcam.x86"
CAMBINPATH="/emu/cccam"
# end
# This method starts CCcam
start_cam () {
PID="$(ps auxw | grep -v grep | grep -v $0 | grep -w $CAMBIN | awk {'print $2'})"
if [ ! -z "$PID" ]; then
echo "$CAMNAME : ist bereits gestartet"
else
$CAMBINPATH/$CAMBIN &
if [ $? -ne "0" ]; then
echo "$CAMNAME : Fehler beim starten!"
else
echo "$CAMNAME : gestartet"
fi
fi
}
# This method stops CCcam
stop_cam () {
PID="$(ps auxw | grep -v grep | grep -v $0 | grep -w $CAMBIN | awk {'print $2'})"
if [ -z "$PID" ]; then
echo "$CAMNAME : ist bereits beendet"
else
pkill $CAMBIN
sleep 2
PID="$(ps auxw | grep -v grep | grep -v $0 | grep -w $CAMBIN | awk {'print $2'})"
if [ -z "$PID" ]; then
echo "$CAMNAME : beendet"
else
kill -9 $CAMBIN
killall -9 $PID >/dev/null 2>&1
echo "$CAMNAME : gekillt"
fi
fi
}
case "$1" in
start)
echo "[SCRIPT] $1: $CAMNAME"
start_cam
;;
stop)
echo "[SCRIPT] $1: $CAMNAME"
stop_cam
;;
restart)
echo "Restarting $CAMNAME"
stop_cam
sleep 2
start_cam
;;
*)
echo "Usage: $0 {start|stop|restart}"
;;
esac
exit 0
Falls noch jemand eine Idee hat oder Interesse sich des Problems anzunehmen....