每当文件发生更改时,我想重新运行节点服务器,但我想使用 fswatch。我正在使用 fswatch 和 shell 脚本,比如
nohup node server.js &
但我不能再次运行相同的脚本,因为它会抛出 EADDRINUSE。
- 在 fswatch 的帮助下(或替代,无需任何新安装)通过脚本重新启动节点的最佳方法是什么?
- 为什么节点没有节点重启之类的东西?
我能想到的是从 ps 获取 pid 并用脚本杀死它,但我想应该有更好的解决方案。
我可以在 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'
EADDRINUSE 是因为你已经绑定在同一个端口上。Node.js 没有内置的重启机制,所以是的,你应该使用一些 bash 脚本(或框架)来很好地重启后台应用程序