Grails 7开发环境下如何在Emacs命令行正常停止应用?
解决Grails 7命令行正常停止应用的方法
1. 调整Grails命令别名
全局别名里的--non-interactive会禁用交互式信号处理,导致Ctrl-C无法触发优雅停止,先修改别名:
alias grails="$GRAILS_HOME/bin/grails --plain-output"
若需非交互模式,可在执行特定命令时单独添加参数,比如grails --non-interactive run-app,而非全局默认开启。
2. 正确执行stop-app命令
- 不要在运行
run-app的终端窗口执行stop-app,打开新终端进入项目根目录后执行:
grails stop-app
- 若端口冲突或识别异常,可指定端口:
grails stop-app --port=8080
3. 用Spring Boot优雅停止机制
Grails 7基于Spring Boot,可通过发送SIGTERM信号实现温和停止:
- 先获取应用进程ID(PID):
lsof -i :8080 | grep LISTEN | awk '{print $2}'
- 发送停止信号:
kill <PID>
该方式会让应用完成资源清理后再退出,比pkill -9更安全。
4. 启动时添加优雅停止参数
启动应用时开启Spring Boot管理端点,提升stop-app命令的可靠性:
grails run-app -Dspring.application.admin.enabled=true
内容的提问来源于stack exchange,提问作者sodastream
相关产品推荐
相关产品推荐

