esrcript cron blues - PullRequest
       8

esrcript cron blues

1 голос
/ 23 января 2010

У меня есть файл escript, который нормально запускается из командной строки, т. Е .:

./escript_file

Предполагается, что cron дружественен, и все пути являются явными, но когда я запускаю его, он не компилируется, говоря, что есть bad attributes.

Плохие атрибуты, о которых идет речь, - определения макросов:

-define(COOKIE, 'somecookie').

Ответ

Благодаря предложению Джеффа Рида я выяснил, какая версия Erlang была запущена, распечатав init:script_id(), который печатает строку типа {"OPT APN 181 O1", "R13B"} и, конечно, версии командной строки и cron собирали разные версии.

Скрипт имел начальную строку:

#!/usr/bin/env escript

и операционная система «нашла» Эрланга для меня. Различные переменные окружения cron означали, что был выбран другой эрланг (первый ответ Джеффа, который я вроде как знал, но не мог понять, как это повлияет на вещи).

Решение состоит в том, чтобы принудительно установить версию с начальной строкой:

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

Постскриптум

Была также другая Ubuntu apt-get установка более ранней версии Erlang (в другом месте, чем исходная установка) и ошибочная 64-битная установка ...

Среда cron просто возвращалась к более старым и малоизвестным установкам, постоянно терпя неудачу: (

Ответы [ 2 ]

3 голосов
/ 23 января 2010

Если все работает нормально из командной строки, вероятной причиной является разница переменных среды для вашей интерактивной оболочки по сравнению с тем, когда cron запускает скрипт.

2 голосов
/ 23 января 2010

Возможно, cron выбирает другую версию erlang на пути. Документация Erlang R12B говорит, что escript игнорирует директивы препроцессора, кроме include_lib. Документация Erlang R13B говорит, что препроцессор запущен для файла. Это определенно объясняет разницу в поведении.

...