TL; DR: Как отправить строку в программу, запущенную bash (и, возможно, запустить ее в фоновом режиме)?
Здравствуйте!Я попробовал довольно много решений оттуда, но я не смог объединить их все в рабочее решение.
Я хочу сделать скрипт bash, который запускает N узлов Erlang, что-то вроде:
for i in {1..N}:
erl -name server$i@127.0.0.1 -setcookie secret
И я хочу, чтобы они «соединили» их, пропингуя другой узел.Чтобы сделать это, мы можем сделать:
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 &
Однако они либо не работают, либо правильно выполняют пинг и завершают мой узел erlang, что мне бы хотелосьпродолжать бежать.Что мне не хватает?Спасибо!