我的应用程序使用 Spring Boot 2.3.1.RELEASE,它是一个使用嵌入式 Tomcat 并监听端口 10605 的可执行 jar。我在 CentOS Linux 版本 7.6.1810(核心)上部署。
我采取了以下步骤:
- SPEEDYF.服务创建
[单元]
描述=SPEEDYF
之后=syslog.target
[服务]
用户=root
ExecStart=/usr/local/bin/SPEEDYF/SPEEDYF.sh
成功退出状态 = 143
[安装]
WantedBy=多用户.目标
- 创建可执行文件 SPEEDYF.sh
#!/ 垃圾箱 / 重击
sudo java -jar -Dspring.profiles.active = prod /usr/local/bin/SPEEDYF/SPEEDYF-0.0.1-SNAPSHOT.jar
首次运行命令:systemctl enable SPEEDYF.service 启动成功:systemctl start SPEEDYF.service
停止无法正常工作:systemctl stop SPEEDYF.service。也就是说,如果我运行 systemctl status SPEEDYF.service 命令,我会得到以下输出:
● SPEEDYF.service - SPEEDYF 已加载:已加载(/etc/systemd/system/SPEEDYF.service;已启用;供应商预设:已禁用) 活动:未活动(已停止).........
但应用程序仍在运行,也就是说,它写入应用程序日志,然后使用以下命令进行验证:
lsof -i -P -n | grep LISTEN
TCP 端口 10605 导致 LISTEN。
这些命令是以 root 用户身份执行的。我不明白该怎么做才能使停止功能正常工作。
提前致谢