2012-12-29 9 views
5

スタンドアロンエスケープ実行ファイルを作成するbasho rebarを使用してErlangアプリケーションをコンパイルしました。私は次のようなコマンドラインから実行します: ./myapp myconfig.configコマンドラインからbasho rebarでErlangアプリケーションを実行するときのErlangノード名の設定

私のクエストは、私のアプリケーションを実行するErlangノード名をどのように決定することができるのですか?アプリケーションで「node()」コマンドを実行すると、デフォルトで「nonode @ nohost」が返されますが、ノード(例:[email protected])に自分の名前を付けたいので、 'node()'を実行すると、私のアプリケーションでは、 'nonode @ nohost'の代わりに '[email protected]'を見たいと思っています。

私は "erlang -name '[email protected]ain.com'について知っていますが、私はコマンドライン。私はErlang VMが実行され、アプリケーションの存続期間中自動的に終了すると思います。

答えて

12

"-sname node"または "-name node @ host"を使用してコマンドラインでnodenameを設定することをお勧めします。 しかし、代わりに `net_kernel 'モジュールを使うことは可能です。私が鉄筋(窒素)と一緒に配布されたアプリケーションを見ていたhttp://www.erlang.org/doc/man/net_kernel.html

$ erl 
Erlang R15B01 (erts-5.9.1) [source] [64-bit] [smp:2:2] [async-threads:0] [hipe] [kernel-poll:false] 

Eshell V5.9.1 (abort with ^G) 
1> node(). 
[email protected] 
2> net_kernel:start([rumata, shortnames]). 
{ok,<0.34.0>} 
([email protected])3> node(). 
'[email protected]' 
([email protected])4> net_kernel:stop(). 
ok 
5> node(). 
[email protected] 
6> net_kernel:start(['[email protected]', longnames]). 
{ok,<0.44.0>} 
([email protected])7> node(). 
[email protected] 
+3

プロトコル: "inet_tcp":レジスタエラー:{{badmatch、{error、econnrefused}}、[{inet_tcp_dist、listen、1、... –

+1

@SepehrSamini、スクリプトを実行する前に 'epmd':' epmd -daemon' – Lol4t0

0

で記述されています。彼らは、パラメータ-args_fileを使用して設定ファイル内のVM引数のほとんどを渡す:

erts-5.9\bin\werl -pa %PA% -boot releases/2.1.0/nitrogen -embedded -config etc/app.generated.config -args_file etc/vm.args 

とvm.argsでは、単にノード名を定義するには、パラメータ-nameを使用します。

-name [email protected] 
0

することができます(escript docsに記載されているように)魔法の "エミュレータ引数"行を使用してください。例えば:それはコマンドラインでerlに渡されたかのように

#!/usr/bin/env escript 
%%! -sname ohai 

main(_Args) -> 
    io:format("I am: ~p~n", [node()]). 

%%! -prefixedラインは、あなたがそこからノード名を指定することができ、処理されます。

関連する問題