Shell脚本中的节点重启

时间:2015-02-19 17:15:39

标签: node.js macos fswatch

我希望在文件发生变化时重新运行节点服务器,但我想使用fswatch。我正在使用fswatch和shell脚本,如

nohup node server.js &

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

  • 什么是在fswatch帮助下通过脚本重启节点的最佳方法(或替代,没有任何新的安装)?
  • 为什么节点没有节点重启等功能?

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

2 个答案:

答案 0 :(得分: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'

答案 1 :(得分:-2)

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