如何在注销后保留远程 CentOS 7 服务器上的服务?

如何在注销后保留远程 CentOS 7 服务器上的服务?

我正在尝试在远程 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命令来实现此目的。

相关内容