【问题标题】:Node Restart in Shell ScriptShell 脚本中的节点重启
【发布时间】:2015-02-19 17:15:39
【问题描述】:

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

nohup node server.js &

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

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

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

【问题讨论】:

标签: node.js macos fswatch


【解决方案1】:

我可以在 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'

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-03
      • 2011-05-31
      • 2014-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-31
      • 2022-10-14
      相关资源
      最近更新 更多