我有一个从命令行运行良好的 escript 文件,即:
./escript_file
它意味着对 cron 友好,并且所有路径都是明确的,但是当我运行它时,它无法编译说有bad attributes
.
有问题的坏属性是宏定义:
-define(COOKIE, 'somecookie').
答案
感谢 Geoff Ready 的建议,我通过打印出哪个版本的 Erlang 来调查正在运行的 Erlang,init:script_id()
它打印出类似的字符串,{"OPT APN 181 O1", "R13B"}
并且果然命令行和 cron 版本正在选择不同的版本。
该脚本有一个初始行:
#!/usr/bin/env escript
操作系统正在为我“寻找”Erlang。cron 的不同环境变量意味着正在选择不同的 erlang(Geoff 的第一个答案,我有点知道但看不出它会如何影响事情)。
然后解决方案是强制版本具有以下起始行:
#!/usr/local/lib/erlang/erts-5.7.3/bin/escript
后记
还有一个不同的 Ubuntuapt-get
安装了早期版本的 Erlang(在与源安装不同的位置)和一个错误的 64 位安装......
cron 环境只是不断退回到较旧且更晦涩的安装,一直失败:(