linux查询进程Pid并kill

过滤掉grep进程,其他全kill

ps aux | grep ping| grep -v grep | awk '{print $2}' | xargs  kill -9

只kill 127.0.0.1的ping进程

ps aux | grep ping| grep -n 127.0.0.1 | awk '{print $2}' | xargs  kill -9

步骤详解:

1、查找进程

ps aux 查找所有进程
《linux查询进程Pid并kill》

2、过滤出要查找的进程

ps aux | grep tomcat 查找所有进程,并过滤出只含有tomcat的进程
《linux查询进程Pid并kill》

其中,第二个进程

ning   2058  0.0  0.0 103320   888 pts/0    S+   18:50   0:00 grep tomcat

为执行”ps aux | grep tomcat “自身的查找进程,所以要过滤掉
执行命令如下:

ps aux | grep tomcat | grep -v grep //过滤掉含有grep的进程

《linux查询进程Pid并kill》

3、查找目标进程的pid

ps aux | grep tomcat | grep -v grep | awk '{print $2}' 

《linux查询进程Pid并kill》

  • awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

  • awk [-F field-separator] ‘commands’ input-file(s)
    其中,commands 是真正awk命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件。
    在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格。

  • awk工作流程是这样的:读入有’\n’换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域, 1 表 示 第 一 个 域 , 1表示第一个域, 1,n表示第n个域。默认域分隔符是”空白键” 或 “[tab]键”,所以$1表示登录用户,$3表示登录用户ip,以此类推。

4、将pid通过管道传递到后面的命令

由于很多命令不支持|管道来传递参数,可使用xargs命令进行传参
如:
《linux查询进程Pid并kill》

5、将Pid传递给kill进行杀线程操作

ps aux | grep tomcat | grep -v grep | awk '{print $2}' | xargs kill -9

至此,查找进程并杀死进程操作结束。
top命令查看,进程已不在。

《linux查询进程Pid并kill》

kill.sh文件中的命令解析

#/bin/bash
currdir=`pwd`
echo $currdir
ps aux | grep $currdir | grep -v grep | awk '{print $2}' | xargs kill -9
  • 1、查看”当前工作目录“的完整路径
    pwd
  • 2、将目录赋值给currdir
    currdir=pwd
    注意用反引号
  • 3、打印路径并执行查杀命令
    ps aux | grep $currdir | grep -v grep | awk ‘{print $2}’ | xargs kill -9
    原文作者:M_-
    原文地址: https://blog.csdn.net/qq_43544283/article/details/123021771
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞