Question

J'ai un fichier Escript qui fonctionne très bien à partir de la ligne de commande, i.e.:.

./escript_file

Il est censé être Cron amical et tous les chemins sont explicites, mais quand je le lance, il ne parvient pas à compiler dire qu'il ya des bad attributes.

Les mauvais attributs en question sont des définitions de macros:

-define(COOKIE, 'somecookie').

La réponse

Merci à la suggestion de Geoff Ready j'ai étudié la version de Erlang est en cours d'exécution en imprimant init:script_id() qui imprime une chaîne comme {"OPT APN 181 O1", "R13B"} et, bien sûr la ligne de commande et les versions Cron ramassaient versions différentes.

Le script avait une première ligne:

#!/usr/bin/env escript

et le système d'exploitation a été « trouver » Erlang pour moi. Les différentes variables d'environnement de Cron signifiait qu'un autre Erlang était ramassé (première réponse de Geoff, et que je connaissais un peu, mais ne pouvait pas voir comment il aurait une incidence sur les choses).

La solution est alors de forcer la version avec une ligne de départ de:

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

Postscript

Il y avait aussi un autre apt-get Ubuntu installer une version antérieure de Erlang (dans un autre endroit à la source d'installation) et un 64 bits errante installer ...

L'environnement Cron continuait de retomber à plus anciens et installations obscures, à défaut tout en: (

Était-ce utile?

La solution

Peut-être Cron Reprenant une version différente de Erlang dans le chemin. Erlang documentation R12B dit que Escript ignore préprocesseur directives en plus include_lib. documentation Erlang R13b dit que le préprocesseur est exécuté sur le fichier. Cela expliquerait certainement la différence de comportement.

Autres conseils

Si elle fonctionne bien à partir de la ligne de commande, une cause probable est une différence dans les variables d'environnement pour votre shell interactif en fonction lorsque le script sera exécutée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top