SSH 启动脚本因 -t 选项而失败

SSH 启动脚本因 -t 选项而失败

我想知道 SSH-t选项。

当我尝试像这样启动 Tomcat 服务器时:

ssh [email protected] -t '~/tomcat/bin/startup.sh'

那么Tomcat就会不是即使启动脚本正在运行,也无法启动。没有这个-t选项,它就可以工作。

据我了解,这是因为一旦启动脚本完成,连接就会关闭,因此该脚本启动的所有后台进程都将不再存在。

为什么会这样呢?我不太熟悉 shell 会话和作业/进程。

有什么办法可以让Tomcat启动吗使用该-t选项? (不幸的是,由于 Ansible,我被迫使用它)。

答案1

使用 Ansible,您可以启动 tomcat 服务,而无需直接调用脚本。

例如:tomcat 服务处理程序具有以下定义 Roles/tomcat/handler/main.yml

- name: restart tomcat
  service: name=tomcat state=restarted

实际的tomcat服务启动任务位于roles/tomcat/tasks/main.yml

- name: Configure Tomcat users
  template: src=tomcat-users.xml dest=/usr/share/tomcat/conf/
  notify: restart tomcat

- name: Start Tomcat
  service: name=tomcat state=started enabled=yes

如果您想启动自己的脚本来启动不属于任何服务监控系统的任意服务,则使用supervisor程序有助于克服此问题。

请参阅此内容以获取有关“不将 tty 分配给 ssh 的好处”的更多信息 https://serverfault.com/questions/593399/what-is-the-benefit-of-not-alaving-a-terminal-in-ssh

相关内容