前言

  公司有150多台服务器,在每一台服务器上都部署了脚本,然后这个脚本一直在运行,出现了一些问题,现在要远程批量干掉这些进程,折腾了半天,如下脚本可以实现

脚本:  

#/bin/bash

for i in `cat /home/zhangdl/old/ip.txt | grep -i -v port | awk '{print $2}'`

do

  ssh -p 888 $i "ps aux | grep -v grep | grep Amateurback.sh | awk ‘{print \$2}’| xargs kill"

if [ $? == 1 ];then

echo $i >> /home/zhangdl/old/error.txt

fi

done

解析

(1)ip.txt里边的格式如下,不方便的字眼使用XXX代替

XXX基地    61.190.XX.XX    XXXjidi   XXX,XXX,XXX,XXX,XXX

(2)为了安全,将ssh端口设置为其它端口,假设这里是888端口,如果是22端口,会是“XXX基地(PORT 22)”,剩余的是其它端口

(3)将ip筛选出来后进行遍历

ssh -p 888 "ps aux | grep -v grep | grep Amaterback.sh | awk '{print \$2}' xargs kill"

选出进程号之后交给xargs kill掉,ssh结合awk使用需将$符号转义,这里不管你那边起了几个进程,只要满足条件,都会kill掉。