我正在尝试在远程 CentOS 7 Web 服务器上运行 Spring Boot 应用程序,该服务器从第一天起就已成功在 Apache 和独立的 tomcat 实例上提供应用程序。但是,当我ssh
连接到远程服务器并启动 Spring Boot 应用程序(位于包含其自己的嵌入式 tomcat 实例的 jar 中)时,Spring Boot Web 服务jar
在我的连接处于活动状态时成功运行ssh
,但在会话结束后终止ssh
。 我需要采取哪些具体步骤才能让包含 Spring Boot Web 服务在会话终止jar
后继续运行?ssh
以下是我使用 ssh 会话从数百英里外的 devbox 启动应用程序时输入的内容:
[ ~]$ cd /path/to/webservice
[ webservice]$ kill $(lsof -t -i:9000)
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
[ webservice]$ java -jar mywebservice.jar
由于 apache 会将服务请求内部转发到port 9000
,因此该服务会通过 apache url 暴露给外界,somedomain.com/someurlpattern
直到我终止ssh
会话。
答案1
在后台运行进程并关闭ssh
会话
有很多方法可以做到这一点:
1.nohup
命令
从 shell 提示符退出后,您可以使用该nohup
命令执行命令。
例子:
$ nohup java -jar mywebservice.jar > /path/to/webservice/logs/mylogfile.txt &
## exit from shell or close the terminal ##
$ exit
2.bashdisown
命令
另一种选择是使用disown
以下命令:
例子:
$ java -jar mywebservice.jar > /path/to/webservice/logs/mylogfile.txt &
[1] 10685
$ disown 10685
$ ps
PID TTY TIME CMD
10685 pts/0 00:00:00 wget
10687 pts/0 00:00:00 bash
10708 pts/0 00:00:00 ps
$ logout
3.screen
命令
您也可以使用该screen
命令来实现此目的。