如何在 watchman 重建时终止服务器
how to terminate server on watchman rebuild
我的 Makefile 中有一个简单的 watch 目标
watch:
watchman-make -p '**/*.go' -t run
target run
启动一个网络服务器并绑定到一个端口。文件更改后,执行 run
,但出现错误。
bind: address already in use
这是因为之前启动的网络服务器没有终止。
我看到与此相关的线程很少,但没有给出解决方案。
https://github.com/facebook/watchman/issues/246
https://github.com/facebook/watchman/issues/447
watchman 是否可以在每次构建之前终止服务器并释放端口。
watchman 并不能真正直接控制该解决方案,因为它对您的服务器一无所知,因为它听起来像是您在构建结束时将其分叉出来,但应该非常简单:让您的 run
目标负责拆除旧的服务器实例。
例如,在您的 Makefile 中:
run: build
./stop-running-server
./start-server
如何实施 stop-running-server
取决于您。下面列出了一些您可以尝试的常用技术:
pkill
杀死名称与您的服务器名称匹配的进程
- 让您的服务器将其进程 ID 写入文件,然后您可以
kill $(cat pidfile)
执行 stop-running-server
我的 Makefile 中有一个简单的 watch 目标
watch:
watchman-make -p '**/*.go' -t run
target run
启动一个网络服务器并绑定到一个端口。文件更改后,执行 run
,但出现错误。
bind: address already in use
这是因为之前启动的网络服务器没有终止。 我看到与此相关的线程很少,但没有给出解决方案。
https://github.com/facebook/watchman/issues/246 https://github.com/facebook/watchman/issues/447
watchman 是否可以在每次构建之前终止服务器并释放端口。
watchman 并不能真正直接控制该解决方案,因为它对您的服务器一无所知,因为它听起来像是您在构建结束时将其分叉出来,但应该非常简单:让您的 run
目标负责拆除旧的服务器实例。
例如,在您的 Makefile 中:
run: build
./stop-running-server
./start-server
如何实施 stop-running-server
取决于您。下面列出了一些您可以尝试的常用技术:
pkill
杀死名称与您的服务器名称匹配的进程- 让您的服务器将其进程 ID 写入文件,然后您可以
kill $(cat pidfile)
执行stop-running-server