2016-10-21 96 views
0

問題: 我試圖運行下面的noshell命令,並保持端口6657上的服務器活着,但似乎不起作用。端口6657上的erlang服務器?

run_server.sh

erl -make 
erl -pa ebin/ -noshell -s server main 6657 -s init stop 

二郎模塊功能

main(Port) -> 
    controller:start(), 

僅供參考,在二郎提示我可以執行的命令 - server:main(6667) 工作正常。

你能給我建議我需要改變那個命令嗎?

謝謝你!

回答

1

假設你有模塊名稱權(你說的第一個片段serverchat_server更高版本),問題最有可能的是,-s module function arg1 [...]發送參數作爲原子的列表,而你的代碼需要一個整數(如你說server:main(6657)作品)。您可以使用-eval代替-s

erl -pa ebin/ -noshell -eval "server:main(6657)" -s init stop 
$ cat a.erl 
-module(a). 
-compile(export_all). 

main(Port) -> 
    io:format("~p~n", [Port]). 
$ erlc a.erl 
$ erl -noshell -pa . -s a main 6657 -s init stop 
['6657'] 
$ erl -noshell -pa . -eval 'a:main(6657)' -s init stop 
6657 
+1

http://erlang.org/doc/man/erl.html 'ERL-PA EBIN/-noshell -RUN「服務器:主( 6657)「-s init stop」會崩潰 ** - 運行Mod [Func [Arg1,Arg2,...]](init標誌)** – kevin

+1

糟糕,我在那裏犯了一個錯字。這應該是'-eval',而不是'-run'。請參閱編輯。 – Dogbert

+0

我可以執行這個命令'''erl -pa ebin/-noshell -eval「server:main(6657)」-s init stop'''沒有崩潰,但服務器並沒有一直運行。我如何繼續在端口6656上運行服務器?謝謝@Dogbert和@kevin – J4cK