Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Cron führt Perl-Script nicht aus

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [wiregate] - √ - Cron führt Perl-Script nicht aus

    Ich möchte jetzt nochmal auf Lösungssuche gehen.
    Ich habe 2 eHz die über jewils ein Perl-Script ausgelesen werden.

    Gesteuert wird das ganze per cron.
    Die Scripte sind beide identisch bis auf die Konfiguration und laufen in der Konsole sauber durch. Bei einem Zähler wird der Cronjob aber nur ausgeführt wenn die Baudrate unverändert auf 300 Baud bleibt, der andere darf die Baudrate wechseln und es läuft.
    Das Problemscript läuft auch nicht parallel mit dem anderen bzw. hat das keinen Einfluss.

    Der Übersicht halber hab ich das Problemscript kopiert und es gibt eine 300 Baud-Variante.

    zaehler_hz.pl (mit Baudratenumschaltung und Wertänderung 4800->300)
    zaehler_hz_300.pl (mit Baudratenumschaltung ohne Wertänderung 300->300)

    Was geht:

    Konsole#: perl /opt/zaehler_hz.pl
    Konsole#: perl /opt/zaehler_hz_300.pl
    cron#: perl /opt/zaehler_hz_300.pl

    Was nicht geht ist:
    cron#: perl /opt/zaehler_hz.pl

    Also wollte ich dann einfach mal cron verar**** und habe ihm nicht das Perl-Script zum starten gegeben sondern ein Bash-Script:

    start.sh
    Code:
    #!/bin/bash
    perl /opt/zaehler_hz.pl
    Das Startscript in der Konsole läuft auch.
    Aber auch da will cron einfach nicht. Ein identisches Plugin für den anderen Zähler verarbeitet cron aber wie gewünscht. Rechte sind mittlerweile alle bei 777.

    Hat jemand einen Tipp woran es liegen könnte?

    Dank und Gruß Mirko
    Umgezogen? Ja! ... Fertig? Nein!
    Baustelle 2.0 !

    #2
    Im Cron-Shellscript mal nachsehen und loggen wie die Einstellungen sind?

    Makki
    EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
    -> Bitte KEINE PNs!

    Kommentar


      #3
      Du meinst jetzt nicht die Einträge in crontab ?
      Umgezogen? Ja! ... Fertig? Nein!
      Baustelle 2.0 !

      Kommentar


        #4
        Zitat von JuMi2006 Beitrag anzeigen
        Hat jemand einen Tipp woran es liegen könnte?
        Hoi Mirko

        Ich vermute, Du editierst die Perlscripte mit einem Editor auf Windoofs.
        Und dann sind da irgendwelche Leerzeichen oder sonstige Zeichen drin und es geht nicht.

        Direkt auf einer Linuxkiste mit nano ist es dann bei mir wunderbar gegangen. Perl ist da eklig...
        Grüsse Bodo
        Fragen gehören ins Forum, und nicht in mein Postfach;
        EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

        Kommentar


          #5
          Danke Bodo aber daran liegts nicht, schon mehrfach überprüft. Dann würde die Konsole auch streiken.

          Hier mal der Teil des Codes wo Cron aussteigt. Die Konsole liefert mir alles. Das letzte was als Ausgabe kommt habe ich mal rot markiert-

          Code:
          ### Anfrage Senden ###
          my $id = qx(echo '\x2f\x3f\x21\x0d\x0a' | socat -T 1 - $device,raw,echo=0,b300,parenb=1,parodd=0,cs7,cstopb=0);
          my $speedcode =  substr($id,4,1);
          my $ack = $speedrate{$baudrate};
          
          ### Zählerkennung auswerten - Geschwindigkeit ermitteln ###
          if ($baudrate eq "auto")
          {
          $ack = $speedrate_auto{$speedcode};
          $baudrate = $baud{$speedcode};
          }
          else
          {
          $ack = $speedrate{$baudrate};
          }
          
          ### Abfrage starten ###
          my @buffer1 = qx(sleep 1; echo $ack | socat -T 1 - $device,raw,echo=0,b300,parenb=1,parodd=0,cs7,cstopb=0);
          [COLOR="Red"]print "Baudwechsel gesendet";[/COLOR]
          my @buffer = qx(socat -T 1 - $device,raw,echo=0,b$baudrate,parenb=1,parodd=0,cs7,cstopb=0);
          print (@buffer,"\n");
          ### AUSWERTUNG ###
          foreach (@buffer)
          .
          .
          .
          Übers Webmin kann ich den Job über Cron starten und hab so dann eine Ansicht der Ausgabe.
          Umgezogen? Ja! ... Fertig? Nein!
          Baustelle 2.0 !

          Kommentar


            #6
            Zitat von JuMi2006 Beitrag anzeigen
            Übers Webmin kann ich den Job über Cron starten und hab so dann eine Ansicht der Ausgabe.
            Mal ein Schuss ins Blaue: alle Unix-Befehle mit vollem Pfad erfassen. Aus Erfahrung mit anderen Plattformen: das Environment von Cron ist nicht das gleiche wie jenes eines eingeloggten Administrators.

            Vielleicht hilfts.

            Gruss, Othmar
            EIB/KNX, VISU mit knxd + linknx + knxweb, Steuerbefehle via SMS und Email mit postfix + procmail

            Kommentar


              #7
              Hatte ich auch schon durch .
              Das Script für den anderen Zähler (identisch) läuft sauber durch cron gesteuert.
              Das ist ja das Mysterium ... eines will...das andere nicht.
              Trotzdem Danke.


              P.S.: Bitte nicht durch meine kurzen Antworten entmutigen lassen Ich bin für jeden Tipp, auch wenn schon x-mal gegeben und y-mal ausprobiert dankbar!
              Umgezogen? Ja! ... Fertig? Nein!
              Baustelle 2.0 !

              Kommentar


                #8
                GELÖST!!!!

                Mit ordentlichen Debug-Ausgaben im socat-string bin ich dem Problem auf die Spur gekommen. Mein Verdacht war schon irgendein Timeout in der mittleren bzw. letzten Abfrage. Irgendwas hat sich da sicherlich gegenseitig blockiert also eine andere timeout-Option ausgewählt und nach wenigen Versuchen war es dann soweit.

                Kann mir vielleicht noch jemand erklären warum folgende Abfrage in Folge funktionieren bzw. nicht funktionieren?

                Was geht:
                • socat -T1 - $device,raw,echo=0,b300,parenb=1,parodd=0,cs7,csto pb=0
                • socat -t1 - $device,raw,echo=0,b300,parenb=1,parodd=0,cs7,csto pb=0
                • socat -T1 - $device,raw,echo=0,b4800,parenb=1,parodd=0,cs7,cst opb=0



                Wobei -T1 scheinbar keine Wirkung zeigt lt. Debug-Info ->
                Code:
                select timed out (no data within 0.500000 seconds)
                Was nicht geht:
                • socat -T1 - $device,raw,echo=0,b300,parenb=1,parodd=0,cs7,csto pb=0
                • socat -T1 - $device,raw,echo=0,b300,parenb=1,parodd=0,cs7,csto pb=0
                • socat -T1 - $device,raw,echo=0,b4800,parenb=1,parodd=0,cs7,cst opb=0


                Die große Frage bleibt aber weiterhin, Konsole ja und Crontab nein ... das raff ich nicht
                Umgezogen? Ja! ... Fertig? Nein!
                Baustelle 2.0 !

                Kommentar


                  #9
                  Erklären kann ich das jetzt auch nicht, Hauptsache es geht (und einem fällt halt die unschöne Aufgabe zu, das 1x herauszufinden wie..)

                  Makki
                  EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                  -> Bitte KEINE PNs!

                  Kommentar

                  Lädt...
                  X