簡體   English   中英

Erlang:啟動從節點

[英]Erlang: starting slave node

我正在嘗試在集群上啟動 Erlang 從屬節點,但收到bash: erl: command not found消息。 雖然我有 erl 的別名。 這是我實際做的:

[user@n001 ~]$ erl -rsh ssh -sname n001    
Eshell V5.7.5  (abort with ^G)
    (n001@n001)1> slave:start_link("user@n002", n002, "-rsh ssh").
    bash: erl: command not found
                                {error,timeout}
    (n001@n001)2>

也許,有什么不對嗎? 謝謝。

更新:
我已經將 Erlang bin dir 添加到我的$PATH變量中; 我已經設置了$ERLANG_ROOT_DIR變量; ~/創建symlinkerl - 但沒有任何改變......
我已經在~/bin/erlang目錄中安裝了 Erlang...

問題出在 bash 上:實際上 erlang 通過 ssh 連接到節點,在非交互模式下調用默認 sh。 但是當 bash 在非交互模式下啟動時,它不會讀取 .bashrc ,其中存儲了我的路徑變量和別名。 所以我切換到 zsh,現在一切正常! ;)

我相信別名不會被尊重

erl 需要真正在你的道路上

另外,我相信您的 .bashrc 也不會執行。 所以你可能需要將“erl”符號鏈接到 /usr/bin 或 /usr/local/bin

您似乎對 start_link/3 的 Host 字段使用了錯誤的格式

它應該是一個原子,代表節點名稱(第二個參數,也是一個原子)應該開始的主機,從而產生節點名稱@Host。

所以在你的情況下

slave:start_link('n002', 'n002', "-rsh ssh").

我猜是二郎餅干。

你能ping通n002嗎? 如果是,那么兩個節點是否具有相同的 cookie?

例如,您可以嘗試: erl -sname abc -rsh ssh -setcookie secretcookie

erl> slave:start(n002, name, "-setcookie secretcookie"). %% 所以這兩個節點共享一個cookie

只需使用

>ssh user@n002 erl

檢查 erl 在 n002 上是否正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM