コマンドラインから正常に実行されるescriptファイルがあります。
./escript_file
これはcronに適したものであり、すべてのパスは明示的ですが、実行するとコンパイルに失敗し、bad attributes
.
問題の悪い属性はマクロ定義です:
-define(COOKIE, 'somecookie').
答え
Geoff Ready の提案のおかげで、コマンド ラインと cron のバージョンが異なるバージョンを取得していることは確かでしたinit:script_id()
。{"OPT APN 181 O1", "R13B"}
スクリプトには次の最初の行がありました。
#!/usr/bin/env escript
オペレーティングシステムは私のためにErlangを「見つけて」いました。cron のさまざまな環境変数は、別の erlang が選択されたことを意味します (Geoff の最初の回答であり、私はちょっと知っていましたが、それがどのように影響するかはわかりませんでした)。
解決策は、次の開始行でバージョンを強制することです。
#!/usr/local/lib/erlang/erts-5.7.3/bin/escript
あとがき
Erlang の以前のバージョンの別の Ubuntuapt-get
インストール (ソース インストールとは別の場所) と、誤った 64 ビット インストールもありました...
cron環境は、古くて目立たないインストールにフォールバックし続け、その間ずっと失敗していました:(