2011-10-04 186 views
1

即时运行一个使用nodejs的http服务器。我还希望服务器永远运行,即使在我的机器重新启动时,我希望节点在重新启动时再次运行。所以我创建了一个脚本放在永远运行nodejs

/etc/init.d/ 

这里是脚本

#! /bin/sh -e 
set -e 
PATH=/usr/local/bin/node:/bin:/usr/bin:/sbin:/usr/sbin 
DAEMON=/opt/node-v0.4.7/examples/app.js 
case "$1" in 
start) forever start $DAEMON ;; 
stop) forever stop $DAEMON ;; 
force-reload|restart) 
forever restart $DAEMON ;; 
*) echo "Usage: /etc/init.d/node {start|stop|restart|force-reload}" 
exit 1 ;; 
esac 
exit 0 

然而,当我运行

/etc/init.d/node 

我不断收到同样的错误说

/etc/init.d/node: 13: Syntax error: word unexpected (expecting ")")

你们能看到错误吗r?我相信这可能是一些简单的语法错误,但它有点晚了,我真的很累。 感谢您的帮助

+6

什么样的shell是/ bin/sh? – aldem

+0

这是问题所在。我不知道为什么/ bin/sh它应该/ bin/bash。感谢您指出错误 –

回答

0

您可以在Ubuntu中创建upstart服务(如果使用的话)。
在/ etc /初始化myapp.conf和写类似:

start on startup 
respawn 
exec node /path/to/your/script.js 

那么你的应用程序将在重启后启动,您可以通过启动管理它和停止命令。
而且看forever node.js module

+0

如果您将upstart配置设置为重生,永久使用它仍然有意义吗? –

+0

我想是的,因为永远的包是主管,可以重新启动你的node.js应用程序。 – Stan

3

我从改变家当:

#! /bin/sh -e

要:

#! /bin/bash

而现在,剧本对我的作品。