如果这个问题已经得到解答,我提前表示歉意,但我已经查看了所有其他问题,并没有发现任何有帮助的东西。
这是我的 upstart 脚本:
nodeapps.conf
start on [2345]
forever start --spinSleepTime 10000 /home/nodeapps/node_app.js
forever start --spinSleepTime 10000 /home/nodeapps/node_metrix.js
当我重新启动时,我调用forever list
来查看是否有任何正在运行的内容。什么都没有显示出来。我看到的其他答案建议查看 /var/log/upstart,但没有 nodeapps 的日志。
我已经尝试过在启动时启动,并启动于 [2345]
我是否遗漏了一些显而易见的东西?我使用 nano 在 /etc/init/ 中创建了该文件。
编辑:我应该注意,这是通过 VPS 的 Ubuntu 14,我只能访问控制台,没有 GUI。
答案1
尝试一下这个新贵脚本:
===
在运行级别启动 [2345]
exec start-stop-daemon --start --exec /usr/bin/forever --start --spinSleepTime 10000 /home/nodeapps/node_app.js
exec start-stop-daemon --start --exec /usr/bin/forever --start --spinSleepTime 10000 /home/nodeapps/node_metrix.js
===
基本上forever
不是 upstart 脚本的关键字,并且 upstart 不知道如何处理它。
exec
however 是一个关键字,它告诉 upstart 启动哪个程序。
更新:答案
...do you think I could get away with just using /usr/bin/forever ....?
很可能不是。upstart 脚本不是像 bash 脚本(或 Windows 中的 .bat / .cmd 文件)那样的命令序列。它们是配置文件(像 Windows 中的 .ini 文件),其中一个配置选项恰好指向实际的可执行文件。
...does this explain the fact that theres no logfile being created?
由于 forever 从未启动过,因此它没有机会留下日志文件。不过,我确信您可以在 upstart 日志文件中找到一些东西。
答案2
我知道我有点晚了,但是我不想使用 exec 和 start-stop-daemon 进程,而是使用 forever 的内置守护进程 foreverd。
foreverd start --spinSleepTime 10000 /home/nodeapps/node_app.js
foreverd start --spinSleepTime 10000 /home/nodeapps/node_metrix.js
如果根环境没有 forever 的路径(虽然可能有,因为你是通过 sudo npm install -g forever 安装的),你需要指定 foreverd 的路径,而不是运行 foreverd。运行
which foreverd
在你登录的终端中获取 foreverd 的位置,然后运行
/path/to/foreverd start --spinSleepTime 10000 /home/nodeapps/node_app.js
/path/to/foreverd start --spinSleepTime 10000 /home/nodeapps/node_metrix.js
这还将自动在 ~/.forever/.log 中创建永久日志文件。
你可以通过运行 forever list 来弄清楚是什么,它将给出如下输出:
jbarber$ forever list
info: Forever processes running
data: uid command script forever pid logfile uptime
data: [0] 4Ola /usr/local/bin/node /home/jbarber/projects/project_name/_stage/index.js 7665 7667 /home/jbarber/.forever/4Ola.log 0:0:6:16.714
然后你可以使用以下命令重新启动/停止该进程
foreverd restart <process_num>
foreverd stop <process_num>
在这个例子中,进程号为 0。