我有一个可以像这样启动的 Erlang 启动脚本:
/usr/bin/erl -boot /path/to/my-boot-script
它在从控制台运行时有效,但在我从 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
日志显示系统正常启动,然后突然终止,没有任何错误消息。这到底是怎么回事?
最佳答案
事实证明,您必须将 -noinput
参数传递给 erl。否则它将尝试打开 stdin 进行读取,失败,因为那里什么都没有,并在没有任何类型的错误消息的情况下终止。
这个有效:
[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
关于linux - 为什么我的 Erlang 引导脚本可以在控制台运行,但在从 init 系统(sysvinit、upstart、systemd)运行时却不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37623205/