本文重点从以下几个方面进行过程说明:
#!/bin/bash
NodeCount=`ps -ef |grep data_collector_client|wc -l`
echo "node count :" $NodeCount
if [ $NodeCount != "0" ];then
NodeCount=`expr $NodeCount - 1`
echo "will delete kill node : " $NodeCount
filelist=`ps -ef |grep data_collector_client|grep -v grep |awk '{print $2}'|tail -$NodeCount`
for file in $filelist
do
echo "will kill the node : " $file
# echo "will kill process id: " $( ps -ef |grep data_collector_client |awk '{print $2}')
#kill -9 $( ps -ef |grep data_collector_client |awk '{print $2}')
kill -9 $file
done
fi
awk ‘{print $2}’ :
表示 打印打印输出 ps 输出结果的第二列内容(即进程号),如下图所示(下图中为ie:428362):

grep -v grep
这里grep -v grep表示 过滤 grep 本身

kill -9 说明
在Linux系统下,我们进行程序调试或者是进行应用程序升级时,经常需要先对我们的目标程序进行kill关闭。此时最基础的办法就是先查找到目标进程的PID,然后再执行kill命令去关闭目标进程。
如:我们想要关闭掉svn相关的进程,首先执行ps -aux | grep
svn找到当前系统中有svnserve的进程,其PID为15889,接着直接执行kill -9 15889就可以关闭掉此svn的进程了。
xargs kill -9
ps -ef | grep procedure_name | grep -v grep | awk ‘{print $2}’ | xargs
kill -9上面指令中的procedure_name 即为所有关闭的进程名