Java Ansible以“终止我的应用程序”;“诺胡普”;
我在Ansible playbook中有一个任务,在后台执行一个.jar文件,但在完成该任务后,(java)应用程序终止Java Ansible以“终止我的应用程序”;“诺胡普”;,java,bash,ansible,Java,Bash,Ansible,我在Ansible playbook中有一个任务,在后台执行一个.jar文件,但在完成该任务后,(java)应用程序终止 - name: Run Java app in the background shell: nohup java -jar app.jar & 我需要的应用程序运行的任务进一步在剧本。有什么想法吗?? 注意:当我在Putty ssh会话中运行它时,它运行平稳,应用程序保持在后台。最可能的原因是附加IO。尝试: - name: Run Java app in th
- name: Run Java app in the background
shell: nohup java -jar app.jar &
我需要的应用程序运行的任务进一步在剧本。有什么想法吗??
注意:当我在Putty ssh会话中运行它时,它运行平稳,应用程序保持在后台。最可能的原因是附加IO。尝试:
- name: Run Java app in the background
shell: nohup java -jar app.jar </dev/null >/dev/null 2>&1 &
-name:在后台运行Java应用程序
shell:nohupjava-jarapp.jar/dev/null 2>&1&
最可能的原因是附加IO。尝试:
- name: Run Java app in the background
shell: nohup java -jar app.jar </dev/null >/dev/null 2>&1 &
-name:在后台运行Java应用程序
shell:nohupjava-jarapp.jar/dev/null 2>&1&
好的,我今天遇到了这个问题,我的脚本有点不同,但基本上做了相同的事情,这就是我在Oracle、Centos和RHEL上运行的脚本
在脚本start_service.sh中,我有这样一个脚本,这个脚本是执行的,不是源代码
#!/bin/sh
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)"
nohup java -jar ${DIR}/$1 --spring.config.location=${DIR}/application.yml --logging.config=${DIR}/logging.xml > ${DIR}/log/output.log 2>&1 &
在我的剧本中,我有:
- name: run service
shell: "{{ service_install_location }}/application_name/start-service.sh application_name-{{ application_version }}.jar"
args:
chdir: "{{ service_install_location }}/application_name"
executable: /bin/bash
现在,BASH_源参数是特定于BASH的,因此如果您运行的是纯旧sh,那么您需要$0。nohup是必需的,因此当ssh连接终止时,您的后台任务不会被终止(为ansible打开-vvv以查看正在进行的连接,以了解这是如何在远程机器上发生的)
我应该指出,我们暂时这样做,因为这应该作为服务安装,由service/init.d控制,但现在,这回答了您的问题,所以我今天遇到了这个问题,我的脚本有点不同,但基本上做的是相同的事情,所以这是我在Oracle上运行的,森托斯和瑞尔 在脚本start_service.sh中,我有这样一个脚本,这个脚本是执行的,不是源代码
#!/bin/sh
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)"
nohup java -jar ${DIR}/$1 --spring.config.location=${DIR}/application.yml --logging.config=${DIR}/logging.xml > ${DIR}/log/output.log 2>&1 &
在我的剧本中,我有:
- name: run service
shell: "{{ service_install_location }}/application_name/start-service.sh application_name-{{ application_version }}.jar"
args:
chdir: "{{ service_install_location }}/application_name"
executable: /bin/bash
现在,BASH_源参数是特定于BASH的,因此如果您运行的是纯旧sh,那么您需要$0。nohup是必需的,因此当ssh连接终止时,您的后台任务不会被终止(为ansible打开-vvv以查看正在进行的连接,以了解这是如何在远程机器上发生的)
我应该指出,我们暂时这样做,因为这确实应该作为服务安装,由service/init.d控制,但现在,这回答了您的问题我已经尝试过,但没有成功。不管怎样,它都会终止应用程序。我想知道是否每个执行的任务都会产生一个新的ssh会话,或者playbook中运行的所有操作都是在一个ssh会话中完成的。这是我能想到的一件事,即在会话结束后终止应用程序。每个任务都是一个新的ssh会话。您可以尝试我笔记中的其他选项。“每个任务都是一个新的ssh会话”,如果在本地运行,这并不总是正确:)这对我来说非常适合
java-jar…
命令。非常感谢。我已经试过了,但没有成功。不管怎样,它都会终止应用程序。我想知道是否每个执行的任务都会产生一个新的ssh会话,或者playbook中运行的所有操作都是在一个ssh会话中完成的。这是我能想到的一件事,即在会话结束后终止应用程序。每个任务都是一个新的ssh会话。您可以尝试我笔记中的其他选项。“每个任务都是一个新的ssh会话”,如果在本地运行,这并不总是正确:)这对我来说非常适合java-jar…
命令。非常感谢。检查此项:检查此项: