host = "[email protected]"
//進程名稱
process ="/usr/local/tomcat"
+++++++ 方法一 +++++++
//進程個數
result = sh returnStdout: true ,script: "ssh $host \"ps -ef | grep \'$process\' | grep -v grep| wc -l\""
result = result.trim()
echo result
if (result!=null && result.toInteger() > 0){
echo "kill 進程 "+result+"個!"
try {
sh "ssh $host \'ps -ef | grep \"$process \" | grep -v grep | awk \"{print \$2}\" | xargs kill -9\'"
} catch(Exception ex) {
resultTemp = sh returnStdout: true ,script: "ssh $host \"ps -ef | grep \'$process \' | grep -v grep| wc -l\""
echo "進程kill成功"
if (resultTemp!=null && resultTemp.toInteger() > 0){
echo "進程kill失敗"
ex.printStackTrace()
}
}
}else{
echo "kill 進程 0個!"
}
+++++++方法二+++++++
killSh = "ps -ef|grep \'$process\' |grep -v grep|awk \'{print \\\$1\\\",\\\"\\\$2}\'|awk -F\',\' \'{print \\\$2}\'|xargs kill -9"
try {
sh "ssh $host \"$killSh\""
echo "KILL SUCCESS"
} catch(Exception e1) {
def msg = e1.getMessage();
if(msg=="script returned exit code 123"){
echo "This process does not exist!"
}else{
echo "KILL FAILURE!"
}
}
其中需要注意兩個點
-
ssh遠程操作的時候,ssh userName@local “需要執行的命令,這裏就是普通的字符串”
例如killSh = "ps -ef|grep \'$process\' |grep -v grep|awk \'{print \\\$1\\\",\\\"\\\$2}\'|awk -F\',\' \'{print \\\$2}\'|xargs kill -9"
將字符串拼接好,放入ssh後的雙引號之內就可以了。
-
Groovy異常的捕獲
try { //Protected code } catch(ExceptionType1 e1) { e1.getMessage()//異常信息 } catch(ExceptionType2 e2) { e2.printStackTrace()//拋出異常 }
注:
在linux中請慎重使用標點符號,雙引號中的語句可以直接使用$test這種方式賦值
ssh host “$test...”
當有反斜槓存在的時候,使用${test}這種形式,大括號可以用來區分
ssh host “${path}/test.log”