Shell 脚本中的节点重启
Node Restart in Shell Script
我想重新运行 节点服务器,每当文件发生变化时,但我想使用 fswatch。我将 fswatch 与 shell 脚本一起使用
nohup node server.js &
但我不能再次运行相同的脚本,因为它会抛出 EADDRINUSE。
- 在 fswatch 的帮助下通过脚本重启节点的最佳方法是什么(或替代方法,无需任何新安装)?
- 为什么节点没有节点重启之类的东西?
我能想到的是从ps获取pid并用脚本杀死它,但我想应该有更好的解决方案。
EADDRINUSE 出现是因为您已经绑定在同一个端口上。 Node.js 没有内置的重启机制,所以是的,您应该使用一些 bash 脚本(或框架)来很好地重启后台应用程序
我可以在 fswatch 的帮助下做到这一点。
fswatch -o mydir | xargs -n1 -I{} ps | grep '[n]ode server.js$' | awk '{system("kill ")}'
或将相同的代码放在单独的 shell 文件中。并将其用作
xargs -n1 './location-of-shell-file.sh'
当我 运行 grep 时,该过程也包含在 ps 中,因此排除我必须使用
grep '[n]ode server.js'
我想重新运行 节点服务器,每当文件发生变化时,但我想使用 fswatch。我将 fswatch 与 shell 脚本一起使用
nohup node server.js &
但我不能再次运行相同的脚本,因为它会抛出 EADDRINUSE。
- 在 fswatch 的帮助下通过脚本重启节点的最佳方法是什么(或替代方法,无需任何新安装)?
- 为什么节点没有节点重启之类的东西?
我能想到的是从ps获取pid并用脚本杀死它,但我想应该有更好的解决方案。
EADDRINUSE 出现是因为您已经绑定在同一个端口上。 Node.js 没有内置的重启机制,所以是的,您应该使用一些 bash 脚本(或框架)来很好地重启后台应用程序
我可以在 fswatch 的帮助下做到这一点。
fswatch -o mydir | xargs -n1 -I{} ps | grep '[n]ode server.js$' | awk '{system("kill ")}'
或将相同的代码放在单独的 shell 文件中。并将其用作
xargs -n1 './location-of-shell-file.sh'
当我 运行 grep 时,该过程也包含在 ps 中,因此排除我必须使用
grep '[n]ode server.js'