У меня есть файл 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 просто возвращалась к более старым и малоизвестным установкам, постоянно терпя неудачу: (