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
Ankündigung
Einklappen
Keine Ankündigung bisher.
- √ - Cron führt Perl-Script nicht aus
Einklappen
Dieses Thema ist geschlossen.
X
X
-
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 ->Was nicht geht:Code:select timed out (no data within 0.500000 seconds)
- 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
Einen Kommentar schreiben:
-
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!
Einen Kommentar schreiben:
-
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.Zitat von JuMi2006 Beitrag anzeigenÜbers Webmin kann ich den Job über Cron starten und hab so dann eine Ansicht der Ausgabe.
Vielleicht hilfts.
Gruss, Othmar
Einen Kommentar schreiben:
-
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-
Übers Webmin kann ich den Job über Cron starten und hab so dann eine Ansicht der Ausgabe.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) . . .
Einen Kommentar schreiben:
-
Hoi MirkoZitat von JuMi2006 Beitrag anzeigenHat jemand einen Tipp woran es liegen könnte?
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...
Einen Kommentar schreiben:
-
Im Cron-Shellscript mal nachsehen und loggen wie die Einstellungen sind?
Makki
Einen Kommentar schreiben:
-
- √ - 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
Das Startscript in der Konsole läuft auch.Code:#!/bin/bash perl /opt/zaehler_hz.pl
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ß MirkoStichworte: -


Einen Kommentar schreiben: