Frage

Ich habe eine eScript Datei, die fein über die Befehlszeile ausgeführt wird, das heißt:.

./escript_file

Es sollte cron, freundlich sein und alle Pfade sind explizit, aber wenn ich es ausführen, schlägt es kompilieren zu sagen, dass es bad attributes.

Die schlechten Eigenschaften in Frage sind Makrodefinitionen:

-define(COOKIE, 'somecookie').

Die Antwort

Dank Geoff Bereit Vorschlag untersuchte ich die Version von Erlang von ausgeführt wurde init:script_id() Ausdrucken, die druckt einen String wie {"OPT APN 181 O1", "R13B"} und sicher genug die Kommandozeile und cron-Versionen wurden verschiedene Versionen Abholung.

Das Skript hatte eine Anfangszeile:

#!/usr/bin/env escript

und das Betriebssystem war ‚finden‘ Erlang für mich. Die unterschiedlichen Umgebungsvariablen von cron gemeint, dass eine andere erlang (Geoff erste Antwort, und man wusste ich irgendwie, konnte aber nicht sehen, wie es Dinge beeinflussen würde) aufgenommen wurde.

Die Lösung ist dann die Version zu zwingen, mit einer Startlinie:

#!/usr/local/lib/erlang/erts-5.7.3/bin/escript

Postscript

Es gab auch eine andere Ubuntu apt-get von einer früheren Version von Erlang installieren (in einem anderen Ort, die Quelle installieren) und eine verirrte 64-Bit installieren ...

Die Umgebung cron einfach weiter zurück zu älteren und obskuren Installationen fallen, andernfalls die ganze Zeit: (

War es hilfreich?

Lösung

Vielleicht Cron ist eine andere Version von erlang im Weg aufnimmt. Erlang R12B Dokumentation sagt, dass eScript ignoriert Präprozessor Richtlinien neben include_lib. Erlang R13b Dokumentation sagt, dass der Präprozessor auf die Datei ausgeführt wird. Das wäre auf jeden Fall den Unterschied im Verhalten erklären.

Andere Tipps

Wenn es gut von der Kommandozeile arbeitet, eine wahrscheinliche Ursache ist ein Unterschied in den Umgebungsvariablen für Ihre interaktive Shell im Vergleich zu, wenn cron das Skript ausgeführt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top