1. 程式人生 > >linux獲取jmeter PID並且kill與啟動

linux獲取jmeter PID並且kill與啟動

ash pidof too awk 區別 執行 自身 通過 sleep

Linux 的交互式 Shell 與 Shell 腳本存在一定的差異,主要是由於後者存在一個獨立的運行進程,因此在獲取進程 pid 上二者也有所區別。

交互式 Bash Shell 獲取進程 pid

在已知進程名(name)的前提下,交互式 Shell 獲取進程 pid 有很多種方法,典型的通過 grep 獲取 pid 的方法為(這裏添加 -v grep是為了避免匹配到 grep 進程):

ps -ef | grep "name" | grep -v grep | awk ‘{print $2}‘

或者不使用 grep(這裏名稱首字母加[]的目的是為了避免匹配到 awk 自身的進程):


ps -ef | awk ‘/[n]ame/{print $2}‘

如果只使用 x 參數的話則 pid 應該位於第一位:

ps x | awk ‘/[n]ame/{print $1}‘

最簡單的方法是使用 pgrep:

pgrep -f name

如果需要查找到 pid 之後 kill 掉該進程,還可以使用 pkill:

pkill -f name

如果是可執行程序的話,可以直接使用 pidof

pidof name

獲取jmeter_pid

[root@izwz9c6q7af34lokld0hqcz ~]# ps -ef | grep "jmeter" | grep -v grep | awk ‘{print $2}‘    
18406
18408
18442

編寫shell

#!/bin/bash

#jmeter kill and start

echo -e ‘\033[32m--------Jmeter---------------\033[0m‘
echo "kill掉jmeter-server 進程................... \n"
kill -9 `ps aux | grep jmeter | grep -v grep | awk ‘{print $2}‘`
sleep 3
cd /root/tools/apache-jmeter-3.3/bin/
echo "啟動jmeter-server"
nohup ./jmeter-server &
echo -e ‘\033[32m------------歡迎使用-----------------\033[0m‘

linux獲取jmeter PID並且kill與啟動