Shn*_*sel 5 unix linux erlang daemon systemd
我有一个可以像这样启动的 Erlang 启动脚本:
/usr/bin/erl -boot /path/to/my-boot-script
Run Code Online (Sandbox Code Playgroud)
从控制台运行时它可以工作,但是当我从 systemd 运行它时失败,没有任何错误消息。systemd 单元文件如下所示:
[Unit]
Description=My daemon written in Erlang
[Service]
Type=simple
ExecStart=/usr/bin/erl -boot /path/to/my-boot-script
Restart=always
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
日志显示系统正常启动,然后突然终止,没有任何错误消息。这到底是怎么回事?
结果你必须将-noinput参数传递给erl。否则,它将尝试打开标准输入进行读取,但会失败,因为那里没有任何内容,并在没有任何错误消息的情况下终止。
这有效:
[Unit]
Description=My daemon written in Erlang
[Service]
Type=simple
ExecStart=/usr/bin/erl -noinput -boot /path/to/my-boot-script
Restart=always
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)