2010-01-22 35 views
1

我有一個運行正常的命令行的escript文件,即:esrcript的cron藍調

./escript_file 

它的目的是cron的友好和所有路徑是明確的,但是當我運行它,它不能通過編譯說有bad attributes

有問題的壞屬性是宏定義:

-define(COOKIE, 'somecookie'). 

答案

感謝傑夫準備的建議,我調查了二郎神的版本是由打印出init:script_id()打印出一個字符串運行像{"OPT APN 181 O1", "R13B"},當然,命令行和cron版本正在挑選不同的版本。

腳本有一個初始行:

#!/usr/bin/env escript 

和操作系統是對我「發現」二郎。 cron的不同環境變量意味着一個不同的erlang被選中(Geoff的第一個答案,我有一個知道,但不知道它會如何影響事物)。

然後將溶液以迫使版本的起跑線:

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

後記

還有一個不同的Ubuntu apt-get安裝的二郎的早期版本(在不同的位置到源安裝)和一個錯誤的64位安裝...

cron環境只是不斷回落到舊的和更隱蔽的安裝,失敗所有w hile :(

回答

2

也許cron正在拾取路徑中erlang的不同版本。 Erlang R12B documentation表示escript忽略include_lib之外的預處理器指令。 Erlang R13B documentation表示預處理器在文件上運行。這肯定會解釋行爲上的差異。

+0

的確,我們已經在R11B上安裝了R13B,並且escript正在拾取R11B,並且命令行正在拾取R13B – 2010-01-23 10:40:46

3

如果它在命令行中工作正常,可能的原因是交互式shell與環境變量在cron運行腳本時的差異。

+0

這是我第一次想到的,這是cron的正常問題。但是,根本不清楚環境變量如何導致代碼的編譯部分失敗,以執行Erlang中的語言構造的定義。 – 2010-01-22 22:48:43