我的 Node.js 服务器 upstart 作业配置:
start on (net-device-up and runlevel [2345] and started td-agent)
stop on runlevel [016]
respawn
env HOME="/var/nodes"
script
chdir $HOME
exec /usr/local/bin/node index.js -c app/config/live >> /var/log/node/server.log 2>> /var/log/node/server_error.log
end script
当我跑步时:
initctl check-config node
我懂了:
node
start on: unknown job td-agent
当服务器启动时,Node 处于关闭状态,但我可以手动启动它:
service node start
node start/running, process 1156
编辑:如果我删除and started td-agent
,它会在启动时启动。但我需要在 td-agent 之后启动 Node。我该如何解决这个问题?
答案1
Upstart 似乎对 一无所知td-agent
。这是因为 upstart 仅识别 upstart 启动的任务。
可能td-agent
是由 中的脚本启动的/etc/init.d
。如果是这种情况,则不能使用 upstart 来启动node
和取决于td-agent
...
解决方案不是使用 upstart。您需要编写一个新脚本来/etc/init.d
启动node
。
您必须在启动脚本后使其运行td-agent
。当您有脚本时,使用update-rc.d
命令来定义它何时启动。
以下是一个示例最小启动脚本的链接。它适用于 liferay,但只需修复环境变量,并用您自己的定义替换 start() 和 stop() 函数。 示例 liferay initd 脚本。