2

我有一个名为 pingpong 的钢筋应用程序。在rebar generate我使用./rel/pingpong/bin/pingpong start. 问题是 erlang VM 始终具有名称-name pingpong@127.0.0.1,但我想要的是使用 name 启动应用程序一次,ping@127.0.0.1然后再次使用 name启动应用程序pong@127.0.0.1

我知道名称保留在 ./rel/pingpong/releases/VSN/vm.config 但我不想在启动应用程序之前手动编辑文件。我想要类似的东西pingpong start -name=ping。有没有办法做到这一点?

4

1 回答 1

3

您可以将 bin/pingpong 脚本编辑为类似 thist 的内容:

代替

NAME_ARG=`egrep -e '^-s?name' $RUNNER_ETC_DIR/vm.args`

放:

NAME_ARG=${NAME_ARG:-`egrep -e '^-s?name' $RUNNER_ETC_DIR/vm.args`}

通过这种方式,您将能够从命令行覆盖节点名称:

NAME_ARG="-name myname@localhost" bin/pingpong start

对于控制台/启动命令:

在你的启动脚本中找到一行:

CMD="$BINDIR/erlexec -boot $RUNNER_BASE_DIR/releases/$APP_VSN/$BOOTFILE -mode embedded -config $CONFIG_PATH -args_file $VMARGS_PATH"

在末尾添加 $NAME_ARG:

 CMD="$BINDIR/erlexec -boot $RUNNER_BASE_DIR/releases/$APP_VSN/$BOOTFILE -mode embedded -config $CONFIG_PATH -args_file $VMARGS_PATH $NAME_ARG"

并且不要忘记从您的 .args 文件中删除 -name NAME

于 2012-11-19T21:55:08.217 回答