无法获得node.js程序的upstart脚本以在启动时启动

Modified on: Sat, 09 Nov 2019 18:40:02 +0800

我为我的node.js程序创建了一个相当简单的启动脚本,它应该在启动时运行:

start on startup
stop on shutdown

script
    exec sudo -u max WEBSITES_DIR=/home/max/websites/ /usr/local/bin/node /home/max/websites/server.js 2>&1 >> /var/log/node.log
end script

如果我使用:

sudo start my-program 

它可以工作,但是当我重新启动机器时,我收到错误消息:

init: my-program main process (325) terminated with status 2

有人知道如何调试这个吗?

作者:Max

最佳答案

startup事件是Upstart启动过程中发出的第一个事件。有各种各样的事情尚未发生 - 根文件系统仍将以只读方式挂载,网络尚未初始化等等。

我怀疑该作业正在快速退出,因为它的所有依赖项(显式或隐式)尚未初始化。我将开始条件改为

start on filesystem and started networking

至少你可以写入你的日志文件。

作为旁注,看起来您反转了输出重定向参数 - 实际上是指>> /var/log/node.log 2>&1。使用2>&1意味着“采取当前fd 1的任何内容,并使fd 2成为同一个东西”,但你还没有改变stdout的内容。


相关问答

添加新评论