在运行node.js脚本的上下文中使用upstart脚本或永远脚本的优点和缺点是什么?

我是一个node.js开发人员。 我使用Amazon ec2来部署我的node.js应用程序。

我想让我的node.js服务永久运行 – 如果因任何原因失败,请重新启动。

我遇到了2个工具。 永远和新贵

使用其中一个有什么优势?

有没有其他的工具比较好?

Upstart是一个系统服务控制器,类似于SysV Init,将基本上启动/停止/重新启动任何注册的服务,基于Node.js的服务控制器,它也会在系统启动时自动启动服务。 但是Upstart本质上是特定于Ubuntu的,Upstart特定的服务不会在其他Linux发行版上运行。

Upstart具有SysV Init兼容性层,您可以将其作为目标,而不是尽可能地保持兼容性层。

Forever是一个Node.js应用程序,根据需要监视和重新启动其他Node.js应用程序,并按其configurationJSON定义。 许多选项和对服务的细粒度控制,而无需将其复制到自定义SysV Init脚本中。 但是,永远不是一个系统服务,所以如果服务器重新启动,你将不得不手动再次启动永远的脚本。

除此之外,如果所有你需要的东西都会在脚本崩溃时重新启动你的脚本,并且你不关心脚本在系统启动时自动启动,所有你需要的只是一个简单的脚本脚本:

#!/bin/bash while true do node ./myScript.js done 

只是为了纠正被接受的答案中的误导性陈述……新贵是纯粹的Ubuntu技术并不是真的。 看到:

https://serverfault.com/questions/291546/centos-6-and-upstart http://searchenterpriselinux.techtarget.com/tip/RHEL-6-ditches-System-V-init-for-Upstart-What-Linux -admins-need-to-know http://en.wikipedia.org/wiki/Upstart#Adoption

因此,我认为这是一个更有吸引力的解决scheme。