无法为 node.js 程序获取启动脚本以在启动时启动

Max*_*Max 6 ubuntu upstart node.js

我为应该在启动时运行的 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
Run Code Online (Sandbox Code Playgroud)

如果我使用:

sudo start my-program 
Run Code Online (Sandbox Code Playgroud)

它有效,但是当我重新启动机器时,我收到错误消息:

init: my-program main process (325) terminated with status 2
Run Code Online (Sandbox Code Playgroud)

有人知道如何调试吗?

Eva*_*der 12

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

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

start on filesystem and started networking
Run Code Online (Sandbox Code Playgroud)

至少那时您将能够写入您的日志文件。

作为旁注,您似乎颠倒了输出重定向参数 - 您实际上是指>> /var/log/node.log 2>&1. Using 的2>&1意思是“采用当前 fd 1 的任何内容,并使 fd 2 成为相同的东西”,但您还没有更改 stdout 是什么。