Shell中提交了一个脚本,进程号已经不知道了,但是需要kill掉这个进程,怎么操作?

ssh $i "ps -ef | grep XXX | grep -v grep |awk '{print $2}' | xargs kill"

实际上就是根据XXX关键字搜索某一类进程PID然后干掉他 ,即批量杀死包含某个关键字的进程

例如:搜索含有spark关键字的进程PID

[root@bigdata-1 phm]# ps -ef | grep spark | grep -v grep |awk '{print $2}' 
12978
17073

本问题的实质就是按照shell脚本中的任务名称关键字搜索出来,并打印出进程id然后kill掉。

脚本中关键术语解释:

  • 管道符"|"用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。
  •  
  • "ps -ef" 是linux里查看所有进程的命令。这时检索出的进程将作为下一条命令"grep spark"的输入。
  •  
  • "grep spark" 的输出结果是,所有含有关键字"spark"的进程。
  •  
  • "grep -v grep" 是在列出的进程中去除含有关键字"grep"的进程。
  •  
  • "awk '{print $2}" 是打印将过滤后的行的第二列,第二列正好是进程号PID。
  •  
  • "xargs kill -9" 中的 xargs 命令是用来把前面命令的输出结果(PID)作为"kill -9"命令的参数,并执行该命令。"kill -9"会强行杀掉指定进程。

注意:该命令是杀掉的指定参数(关键词)的一类进程(多个)或运行指定参数命令的进程。

另外该命令还可以这样写:

ps -ef|grep spark|grep -v grep|cut -c 9-15|xargs kill -9

awk '{print $2}'换成cut -c 9-15,不过建议用awk比较直观

[root@bigdata-1 phm]# ps -ef|grep spark|grep -v grep|cut -c 9-15
 12978
 17073

猜你喜欢

转载自blog.csdn.net/godlovedaniel/article/details/109139575