linux - 为什么我的 Erlang 引导脚本可以在控制台运行,但在从 init 系统(sysvinit、upstart、systemd)运行时却不起作用?

标签 linux unix erlang daemon systemd

我有一个可以像这样启动的 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/

相关文章:

linux - 非 Root linux 故障排除

linux - Anjuta/Glade 教程还是更好的 IDE?

linux - `elif' 意外.. 对于日期函数

linux - 设置 CRAMFS 文件系统的权限

java - 无法读取资源属性 Spring Batch 的 Unix 服务器路径

configuration - 如何定义配置文件变量?

erlang - Erlang 中二进制字符串的棘手模式匹配

linux - appassembler maven 插件未对生成的脚本设置 "execute"权限

json - 如何在 shell 脚本中缩小 JSON?

erlang - Jinterface OtpNode初始化-name或-sname标志