2011-10-04 189 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

而現在,劇本對我的作品。