gpt4 book ai didi

linux - 运行 N 个 Erlang 节点并使用 bash 脚本在每个节点中执行一行

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:50:31 25 4
gpt4 key购买 nike

TL;DR:如何向 bash 启动的程序发送一行(并可能在后台运行)?

你好!我已经尝试了很多来自那里的解决方案,但我无法将它们全部组合成一个有效的解决方案。

我想制作一个运行 N 个 Erlang 节点的 bash 脚本,例如:

for i in {1..N}:
erl -name server$i@127.0.0.1 -setcookie secret

我希望他们通过 ping 另一个节点来“连接”他们。为此,我们可以这样做:

erl -name some_server@127.0.0.1 -setcookie secret
(inside erlang)> net_adm:ping('another_server@127.0.0.1').

但是我无法将这两者结合起来,即使在单个节点上尝试也是如此。

我试过:

echo "net_adm:ping('another_server@127.0.0.1')." > erlang_command
cat erlang_command - | erl -name some_server@127.0.0.1 -setcookie secret

(i've had partial success with this one, i can run it manually but i couldn't make it to work to run in the background or in another terminal)

xterm -e "echo \"net_adm:ping('another_server@127.0.0.1').\"; cat erlang_command - | erl -name some_server@127.0.0.1 -setcookie secret"

或其他技巧,例如:

echo "net_adm:ping('another_server@127.0.0.1')." | erl -name some_server@127.0.0.1 -setcookie secret

-----

echo "net_adm:ping('another_server@127.0.0.1')." > /dev/stdin
erl -name some_server@127.0.0.1 -setcookie secret

-----

Some uses of nohup and & (can't remember these exactly, but got a similar experience)
nohup erl -name some_server@127.0.0.1 -setcookie secret &

但是这些要么不起作用,要么正确执行 ping 并完成我的 erlang 节点,我想继续运行它。我错过了什么?谢谢!

最佳答案

通过管道将输入输入到 erl shell 并不是执行短代码的好方法。要么使用类似 erl -noshell -name ... -setcookie ... -eval 'rpc:call(another_server@127.0.0.1, MODULE, FUNCTION, [ARGS]).' (替换 MODULE , FUNCTION 和 ARGS 与你想做的任何事情),或者如果你想做的事情比 oneliner 长一点,就写一个脚本;见http://erlang.org/doc/man/escript.html了解详情。

关于linux - 运行 N 个 Erlang 节点并使用 bash 脚本在每个节点中执行一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50752846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com