一种以standalone方式启动erlang应用的方法

本文介绍如何以后台模式启动Erlang应用,并提供两种控制后台模式Erlang节点的方法:通过远程shell JCL登录及使用erl的-remsh参数。此外,还讨论了如何在不中断应用的情况下,从控制状态返回后台模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

就像普通java应用一样启动一个erlang虚拟机,程序在虚拟机上运行,没有交互界面。

一个办法是启动时带 -detached参数,这样erlang虚拟机就进入了所谓的detached模式,在detached模式中,erlang静悄悄的在背后运行,没有常见的那个交互终端界面。

例子:以detached模式启动一个my_app应用
erl -detached -name foo@192.168.1.103 -setcookie abc -s my_app

my_app就像普通的daemon应用一样在背后运行了

但是当要控制detached模式启动的erlang虚拟机时怎么办,比如退出应用,或者查看erlang应用状态等。

连接detached模式的erlang节点的方法就我所知有两种:

1。 通过远程shell JCL登录,在Programming Erlang的6.7.3节介绍了这个,简单的说就是ctrl+g后的那个shell界面。具体方法是:
i) 启动一个erlang节点:
erl -name bar@192.168.1.103 -setcookie abc

ii) ctrl+g进入shell JCL,然后远程连接detached模式的erlang:
--> r 'foo@192.168.1.103'
--> c
Eshell V5.7.1 (abort with ^G)
(foo@192.168.1.103)1>

就可以控制detached模式的erlang了

2。使用erl的-remsh参数
erl -name bar@192.168.1.103 -remsh foo@192.168.1.103 -setcookie abc

但这样attach上后不知道怎么恢复到原来的detached模式


个人觉得shell JCL的方式比较好,如果有多个detached模式的Erlang节点(不管是不是远程的),都可以用一个Erlang shell进行控制,有点screen的感觉了,呵呵。

detached模式比较符合我们常用的erlang启动方法。在mryufeng的[url=http://mryufeng.iteye.com/blog/362394]另一种实用的接入erlang控制台的方法[/url]中提到的方法也蛮好的说,但不知道可不可以远程接入。

嗯,先记下

注:
带-detached参数的启动可能等效于同时带-noshell和-noinput参数的启动,用
ps -ef|grep beam

查看-detached启动的erlang进程时就会发现包含了-noshell -noinput这俩参数。


参考资料
1. [url=http://www.sics.se/~joe/tutorials/web_server/web_server.html#m2.2]Detached mode[/url]
2.[url=http://erlang.org/doc/man/erl.html]erl[/url]
3. [url=http://erlang.org/pipermail/erlang-questions/2008-May/034768.html]How to start an erlang applications from the command line non-interactively?[/url]
Flink standalone模式是一种使用Apache Flink进行分布式计算的方式。它使用了集群模式,其中一个节点担任JobManager的角色,负责接收和调度任务,其他节点担任TaskManager的角色,负责执行任务。 当我们启动Flink standalone模式时,首先我们需要启动JobManager。在启动JobManager之前,我们需要配置flink-conf.yaml文件,其中包括JobManager的地址和端口号等信息。然后,我们使用命令行工具来启动JobManager,通过命令"bin/start-cluster.sh"执行。启动成功后,我们可以在日志中看到JobManager的地址和端口号。 接下来,我们需要启动一些TaskManager节点来执行任务。我们可以在不同的机器上启动多个TaskManager节点,以便实现并行计算。启动TaskManager的方式类似于启动JobManager,我们需要配置flink-conf.yaml文件,并使用命令行工具启动TaskManager。 一旦所有的节点启动成功,并且JobManager和TaskManager之间的通信设置正确,Flink standalone集群就可以正常工作了。 当我们提交一个Flink任务时,它首先会通过JobManager获得一个执行计划。执行计划描述了任务的整体结构和执行流程。然后,JobManager会将计划发送给TaskManager,并启动任务的执行。 在任务执行过程中,JobManager负责监控任务的进度,并负责任务的恢复和故障处理。TaskManager负责实际执行任务的计算逻辑,并将中间结果发送给其他的TaskManager或JobManager。任务执行完成后,JobManager会汇总结果并返回给客户端。 总结起来,Flink standalone模式的启动流程可以简单描述为:配置好集群的信息和通信设置,启动JobManager和TaskManager节点,提交任务,JobManager分配并发送执行计划给TaskManager,TaskManager执行任务逻辑并返回结果,JobManager汇总结果并返回给客户端。整个过程中,JobManager负责任务的调度和监控,TaskManager负责任务的执行和结果的传输。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值