【问题标题】:Starting Erlang service at boot time (using Relx for creating release)在启动时启动 Erlang 服务(使用 Relx 创建版本)
【发布时间】:2015-05-16 22:29:44
【问题描述】:

我有一个用 Erlang 编写的服务器,用 Rebar 编译,我用 Relx 发布了一个版本。以

开头
/root/rel/share3/bin/share3 start

下一步是在服务器启动时启动。

我尝试了不同的方法,最后一种是使用 /etc/init.d/skeleton 我更改了以下内容

NAME=share3
DAEMON=/root/rel/share3/bin/share3
DAEMON_ARGS="$1"

在那之后,我运行了 update-rc.d,但我还没有完成它。 (Ubuntu 14.04)

该服务一直运行到机器重新启动,我需要登录并重新启动它。

对于Windows来说,真的很优雅,因为它可以创建Windows服务。

【问题讨论】:

    标签: erlang relx


    【解决方案1】:

    终于解决了!

    我已经告诉 relx 将结果放在 /home/mattias/rel 中。 relx 的脚本是 /home/mattias/rel/share3/bin/share3

    替换行

    SCRIPT_DIR="$(dirname "$0")"
    

    by(你需要修复路径/home/mattias/rel)

    HOME=/home/mattias
    export HOME
    SCRIPT_DIR="/home/mattias/rel/share3/bin"
    

    将文件复制到 /etc/init.d/share3 使用

    sudo cp ~/rel/share3/bin/share3 /etc/init.d/
    

    测试它是否可以使用

    /etc/init.d/share3 start
    

    /etc/init.d/share3 stop
    

    为了让它在启动时启动,安装 sysv-rc-conf

    sudo apt-get install sysv-rc-conf
    

    启用开机启动使用

    sudo sysv-rc-conf share3 on
    

    并禁用

    sudo sysv-rc-conf share3 off
    

    欢迎使用替代品。

    【讨论】:

      【解决方案2】:

      Ubuntu 使用upstart 作为初始化系统,所以你可以尝试类似的方法:

      description "Start my awesome service"
      start on runlevel [2345]
      stop on runlevel [!2345]
      
      respawn
      exec /root/rel/share3/bin/share3
      

      您必须将此脚本放在/etc/init/ 目录中,扩展名为“.conf”,例如“/etc/init/share3.coinf”。要启动它,请调用 sudo start share3

      【讨论】:

        猜你喜欢
        • 2014-02-28
        • 2014-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-11
        • 2017-08-11
        • 2011-12-03
        相关资源
        最近更新 更多