Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Ansible以“终止我的应用程序”;“诺胡普”;_Java_Bash_Ansible - Fatal编程技术网

Java Ansible以“终止我的应用程序”;“诺胡普”;

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

我在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 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…
命令。非常感谢。检查此项:检查此项: