0

每当文件发生更改时,我想重新运行节点服务器,但我想使用 fswatch。我正在使用 fswatch 和 shell 脚本,比如

nohup node server.js &

但我不能再次运行相同的脚本,因为它会抛出 EADDRINUSE。

  • 在 fswatch 的帮助下(或替代,无需任何新安装)通过脚本重新启动节点的最佳方法是什么?
  • 为什么节点没有节点重启之类的东西?

我能想到的是从 ps 获取 pid 并用脚本杀死它,但我想应该有更好的解决方案。

4

2 回答 2

0

我可以在 fswatch 的帮助下做到这一点。

fswatch -o mydir | xargs -n1 -I{}  ps | grep '[n]ode server.js$' | awk '{system("kill "$1)}'

或将相同的代码放在单独的 shell 文件中。并将其用作

xargs -n1 './location-of-shell-file.sh'

当我运行 grep 时,该进程也包含在 ps 中,因此要排除我必须使用的

grep '[n]ode server.js'
于 2015-02-23T15:51:10.660 回答
-2

EADDRINUSE 是因为你已经绑定在同一个端口上。Node.js 没有内置的重启机制,所以是的,你应该使用一些 bash 脚本(或框架)来很好地重启后台应用程序

于 2015-02-19T17:24:51.930 回答