2013-02-22 37 views
2

我正在开发一个服务器端node.js应用程序。问题是,该服务器使用sudo node myfile.js启动后(没有sudo它无法访问端口80),我也没有办法阻止它除了使用sudo killall node从另一个命令提示符窗口,这似乎是错误的,因为它是laborous并不会激活事件process.on("exit",callback)启动服务器后,退出node.js的正确方法是什么?

+4

'Control + C'将正常工作。 – Brad 2013-02-22 22:52:11

+0

@Brad在这里工作不正常。它使节点进程保持打开状态,下次尝试打开它时,我得到的端口出错。 – MaiaVictor 2013-02-22 22:59:38

+1

在一个不相干的笔记上,如果你不是绝对必须的,你不应该使用sudo。这会导致服务器以root身份执行,因此它所做的每件事都以root身份执行。这会在远程代码执行时引发巨大的安全问题(想想最近的Rails问题)。您可以看到的另一种方法是使用类似nginx的方式在反向代理后面运行您的节点应用程序。 老实说,如果你只是做这个本地主机(重新阅读后,你可能是),你可能很好地使用sudo,但它的东西要记住。 – 2013-02-22 23:01:53

回答

0

加入-9杀死应该可以解决问题。

ps aux | grep node 
kill -9 PID 
+0

但是每次我想杀死这个过程时,我必须输入这个吗?我一分钟做好几次。那将是天花乱坠。 – MaiaVictor 2013-02-22 23:00:17

+0

'killall -9 node'也应该可以工作 – StephShelley 2013-02-22 23:04:21

1

测试你可以把一个杀死开关在你的程序,如:

if(req.url=="/shutdown"){ 
    res.end("Shutting down server."); 
    process.exit(0); 
} 

然后你只需以关闭服务器访问http://localhost/shutdown。你甚至可以创建一个URL来为你启动一个新的实例,只要不要忘记释放所需的资源,比如文件和正在使用的端口。

相关问题