我希望在文件发生变化时重新运行节点服务器,但我想使用fswatch。我正在使用fswatch和shell脚本,如
nohup node server.js &
但我不能再次运行相同的脚本,因为它会抛出EADDRINUSE。
我能想到的是从ps获取pid并用脚本杀死它,但我想应该有更好的解决方案。
答案 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脚本(或框架)来重新启动后台应用程序