erlang - 启动脚本

标签 erlang

要启动我的程序,我执行下一个序列:

$ erl
> c(module1).
> c(module2).
> c(modulen).
modulen:start().

是否有可能创建允许我启动程序的脚本?

最佳答案

您可以使用加载器脚本以 OTP 方式启动您的应用程序:

-module(XYZ_app).

-export([start/0]).

start() ->
    application:start(inets),
    application:start(XYZ).

您通过 shell 脚本启动该脚本。小心使用 escript如果您计划构建在操作系统启动时运行的守护程序,因为它们很棘手。
#!/bin/bash
erl -boot start_sasl -s XYZ_app start

当然你需要你的XYZ.app文件(只是一个例子):
{application, tinycouch,
 [{description, "tinycouch"},
  {vsn, "0.1"},
  {modules, [
         tinycouch, tinycouch_app, tinycouch_sup,
         tinycouch_server, tinycouch_logger_h, tinycouch_utils,
         tinycouch_db, mod_tinycouch
        ]},
  {registered, [tinycouch
            ,tinycouch_server
            ,tinycouch_sup
           ]},
  {applications, [kernel, stdlib, sasl, inets]},
  {env, []},

  %% Application Start point
  {mod, {tinycouch_sup, []}}]}.

...以及您所有的.erl文件必须已编译。

备注 如果您打算分发您的应用程序(例如 Debian 存储库等),您可能应该考虑使用 make文件来编译和安装你的应用程序。

最后一点:您也可以使用 boot文件(最终的 OTP 方式),但我发现那些非常受限制:引导文件将您的应用程序绑定(bind)到 具体 Erlang(和其他相关应用程序)的版本发布。您的应用程序可能能够在各种 Erlang 版本中运行,但您需要为您打算发布的每个“平台版本”有一个单独的构建/发布过程。

关于erlang - 启动脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1865997/

相关文章:

ssl - 如何在 erlang/elixir 服务器上正确设置 SSL?

ssl - Erlang SSL - 设置最大发送片段大小?

erlang - ejabberd 监督模块

ssl - 如何在同一端口上提供 tcp/ssl 支持

erlang - 保持进程处于事件状态只是为了链接其他进程

Erlang 命令行

Erlang:以编程方式获取应用程序版本

linux - 事件套接字的 '{tcp_error, Socket, etimedout}' 消息从何而来?

macos - 如何在 OSX 10.10 中使用 Homebrew 卸载 Erlang?

Prolog 在 erlang 中剪切 "!"运算符