简体   繁体   English

Ansible剧本查找特定的Java进程并杀死

[英]Ansible playbook to find particular java process and kill

I'm working on deploying microservices with ansible-playbook right now. 我正在使用ansible-playbook部署微服务。 And all of the microservices uses java -jar command to deploy. 并且所有微服务都使用java -jar命令进行部署。 Right now I'm trying to write an ansible playbook to find and kill dependent java -jar process before deploying other one. 现在,我正在尝试编写一本有趣的剧本,以便在部署其他Java -jar进程之前先查找并杀死它。

I'm running out of ideas here. 我的想法在这里用光了。 I was thinking of creating a script in init.d for java deamon. 我正在考虑在init.d中为Java守护进程创建一个脚本。 But, if i do that and stop service, it would stop all the java processes which i wouldn't want. 但是,如果我这样做并停止服务,它将停止所有我不希望的Java进程。

Output for ps -ef | grep java ps -ef | grep java 输出 ps -ef | grep java ps -ef | grep java

root 28330 1 1 13:52 ? 28330 1 1 13:52 00:00:56 java -jar -DCONFIG_FOLDER=/opt/app/microservices/deploy/dal-core/config /opt/app/microservices/deploy/dal-core/enrollment-vehicle-dal-core-0.0.1-SNAPSHOT.jar 00:00:56 java -jar -DCONFIG_FOLDER = / opt / app / microservices / deploy / dal-core / config /opt/app/microservices/deploy/dal-core/enrollment-vehicle-dal-core-0.0.1-快照

root 29143 1 2 14:22 ? 29143 1 2 14:22? 00:00:49 java -jar -DCONFIG_FOLDER=/opt/app/microservices/deploy/dal-core/config /opt/app/microservices/deploy/dal-core/enrollment-vehicle-listener-0.0.1-SNAPSHOT.jar 00:00:49 java -jar -DCONFIG_FOLDER = / opt / app / microservices / deploy / dal-core / config /opt/app/microservices/deploy/dal-core/enrollment-vehicle-listener-0.0.1-SNAPSHOT。罐

root 29879 1 2 14:23 ? 29879 1 2 14:23 00:00:48 java -jar -DCONFIG_FOLDER=/opt/app/microservices/deploy/dal-core/config /opt/app/microservices/deploy/dal-core/enrollment-account-dal-core-0.0.1-SNAPSHOT.jar 00:00:48 java -jar -DCONFIG_FOLDER = / opt / app / microservices / deploy / dal-core / config /opt/app/microservices/deploy/dal-core/enrollment-account-dal-core-0.0.1-快照

root 31093 1 3 14:28 ? 31093 1 3 14:28 00:01:04 java -jar -DCONFIG_FOLDER=/opt/app/microservices/deploy/listener/config /opt/app/microservices/deploy/listener/enrollment-account-listener-0.0.1-SNAPSHOT.jar 00:01:04 java -jar -DCONFIG_FOLDER = / opt / app / microservices / deploy / listener / config /opt/app/microservices/deploy/listener/enrollment-account-listener-0.0.1-SNAPSHOT.jar

asadmin 31208 18879 0 14:57 pts/1 00:00:00 grep --color=auto java asadmin 31208 18879 0 14:57点/ 1 00:00:00 grep --color = auto java

In the above scenario, If i happen do deploy enrollment-account-dal-core again, I should 1st kill enrollment-account-listener (pid:31093) and then enrollment-account-dal-core (pid:29879). 在上述情况下,如果发生这种情况,请再次部署enrollment-account-dal-core,我应该首先杀死enrollment-account-listener(pid:31093),然后再杀死enrollment-account-dal-core(pid:29879)。

I have one playbook for all of the microservices so I won't be able to hard code it either. 我为所有微服务编写了一本剧本,因此也无法对其进行硬编码。

I'm not sure, but I hope that pattern parameter in service module will solve your problem. 我不确定,但是希望service模块中的pattern参数能够解决您的问题。 You can find documentation here . 您可以在此处找到文档。 I think your Ansible task will look like this code: 我认为您的Ansible任务将类似于以下代码:

- name: Killing enrollment-account-listener
  service:
    name: enrollment-account-listener
    state: stopped
    pattern: enrollment-account-listener

Documentation says, if service with given name doesn't response to service status command, then find pattern in output of ps command. 文档说,如果具有给定名称的服务没有响应服务状态命令,则在ps命令的输出中找到pattern If the string is found, the service will be assumed to be running. 如果找到该字符串,则将假定该服务正在运行。

If it won't work, you can still use command or shell module to find solution to this problem. 如果它不起作用,您仍然可以使用commandshell模块找到此问题的解决方案。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM