Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将iex会话附加到正在运行的elixir/OTP进程_Elixir_Otp_Elixir Iex - Fatal编程技术网

将iex会话附加到正在运行的elixir/OTP进程

将iex会话附加到正在运行的elixir/OTP进程,elixir,otp,elixir-iex,Elixir,Otp,Elixir Iex,我有一个elixir/OTP应用程序正在生产中运行,它是从mix phoenix.server开始的。它有几个保持状态的进程。其中一个是作为代理实现的隐藏,它当前有一个状态,我希望在不停止整个应用程序的情况下手动更改该状态。 一旦我进入了应用程序内部的iex会话,这将是微不足道的,但我不知道在elixir中是否可以使用此选项?这取决于您是如何启动OTP应用程序的。要连接到节点,需要使用--name或--sname标志启动节点。您可以使用node() 节点名是一个原子,其中第一部分是实际的节点名,

我有一个elixir/OTP应用程序正在生产中运行,它是从
mix phoenix.server
开始的。它有几个保持状态的进程。其中一个是作为代理实现的隐藏,它当前有一个状态,我希望在不停止整个应用程序的情况下手动更改该状态。
一旦我进入了应用程序内部的iex会话,这将是微不足道的,但我不知道在elixir中是否可以使用此选项?

这取决于您是如何启动OTP应用程序的。要连接到节点,需要使用
--name
--sname
标志启动节点。您可以使用
node()

节点名是一个原子,其中第一部分是实际的节点名,第二部分是主机名。主机用于路由,因此很难连接到部署在
nohost
上的节点

如果您使用短名称(
--sname
)启动
iex
,它将自动检测您的主机名

$ iex --sname foo --cookie ciastko
(...)
iex(foo@MacBook-Pro-Tomasz)1> node
:"foo@MacBook-Pro-Tomasz"
在其他控制台上,使用不同的名称和相同的cookie运行
iex
,然后尝试
Node.connect(:“foo@MacBook-Pro Tomasz”)
。他们应该联系起来

您可能在启动phoenix应用程序时没有考虑到这一点,现在无法连接。要在下次需要跑步时以这种可能性启动Phoenix,请执行以下操作:

elixir --sname some_name --cookie ciastko -S mix phoenix.server
elixir --sname some_name --cookie ciastko -S mix phoenix.server