kill-agent.yml里面的内容
hosts: test-node
tasks:
- name: kill agent jmeter server
shell: "kill `ps -ef |grep jmeter |grep -v grep |awk '{print $2}'`"
批量停止jmeter进程
下面将这条命令作一下简单说明:
管道符”|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。
ps -ef” 是linux里查看所有进程的命令。这时检索出的进程将作为下一条命令”grep jmeter”的输入。
“grep jmeter” 的输出结果是,所有含有关键字” jmeter”的进程。
“grep -v grep” 是在列出的进程中去除含有关键字”grep”的进程。
awk '{print $2}'的意思是选取并输出第二列的数据
上面的语句还可以换成 :
ps -ef|grep jmeter|grep -v grep|cut -c 9-15|xargs kill -9
其中:
“cut -c 9-15” 是截取输入行的第9个字符到第15个字符,而这正好是进程号PID
xargs kill -9” 中的 xargs 命令是用来把前面命令的输出结果(PID)作为”kill -9”命令的参数,并执行该命令。”kill -9”会强行杀掉指定进程。
start-agent.yml里面的内容
---
- hosts: test-node
vars:
ip: "{{ ansible_eth0['ipv4']['address'] }}"
tasks:
- name: restart agent jmeter server
shell: "nohup /root/apache-jmeter-5.3/bin/jmeter-server -Djava.rmi.server.hostname={{ip}} &"
批量启动jmeter进程
vim /etc/ansible/hosts 内容如下:代表远程启动的那些服务器的地址、密码和账号
[test-node]
172.18.38.144 ansible_ssh_host=172.18.38.144 ansible_ssh_port=22 ansible_ssh_user="user" ansible_ssh_pass="1111"
远程启动jmeter命令:
ansible-playbook start-agent.yml
远程关闭jmeter命令:
ansible-playbook kill-agent.yml