对于一个互联网运维人员来说,linux的shell命令是一个不得不会的命令,并且杀死一个进程也是经常被使用到的。根据进程id杀死进程用的命令是kill,根据进程名杀死进程的命令是pkill或是killall。但是这些命令都不会去杀死由某个进程所产生的子进程。那么,有什么方式能将由某个进程所产生的子进程一同杀死呢?

下面我们就来讲讲如何通过shell脚本,连续递归杀死一个进程下的全部进程树的方法。

首先,根据进程名获取进程id,我们使用的是pidof命令。

如我们要获取进程A,我们就使用pidof A这个命令

然后我们要获取以当前进程为父进程的进程,我们使用ps -ef命令,然后通过awk来提取出来。

ps -ef |awk '{print $2 " " $3}'

这样就能获取父进程与子进程两个参数了,然后我们继续使用管道,寻找有父进程的那一行。

ps -ef |awk '{print $2 " " $3}' |grep "512"

(这里我们假设要删除的父进程为512)

然后提取进程,同样是使用awk方法。

ps -ef |awk '{print $2 " " $3}' |grep "512" |awk '{print $1}'

最后还要过滤掉自己就是512的那个进程。

ps -ef |awk '{print $2 " " $3}' |grep "512" |awk '{print $1}' |grep -v "512"

如果大家以为就这么完了,那就彻底上当了,哈哈。因为子进程也是有可能会派生子进程的,所以在kill掉他们前,需要先递归做一下刚才的事情,哈哈。

好了,废话也不多说了,直接上代码。

下面的代码假设要kill的进程名叫cert。#!/bin/bash

function findandkillchildren {

PIDS = `ps -ef |awk '{print $2 " " $3}' |grep $1 |awk '{print $1}' |grep -v $1`

for var in $PIDS

do

#在这里做了递归操作

findandkillchildren $var

done

kill $PIDS

kill $1

}

PID = `pidof cert`

findandkillchildren $PID

linux 进程树id,linux shell杀死进程树相关推荐

  1. linux select 进程id,Linux基础命令---显示进程ps

    ps ps指令可以显示系统中当前进程的信息,它的输出结果是高度可定制的.如果您希望重复更新所选内容和显示的信息,请使用top(1)代替. 请注意,"ps-aux"与"ps ...

  2. linux 该用户组id,linux用户和用户组的一些基本知识

    1.查看用户用户组信息,(id -un是获得当前登陆的用户名称) [root@adx /home/wm/diad]# id -un root [root@adx /home/wm/diad]# id ...

  3. linux grep 正则 id,Linux grep正则表达式

    正则表达式只是字符串的一种描述,只有和支持正则表达式的工具相结合才能进行字符串处理.本文以grep为例来讲解正则表达式. grep一般情况下支持基本正则表达式,可以通过参数-E支持扩展正则表达式,另外 ...

  4. linux 获取cpu id,linux获取cpu id和disk id

    2013-04-19 15:17 57人阅读 评论(0) // 获得CPU ID public static final String CPU_ID_CMD = "dmidecode -t ...

  5. linux系统计算器工具,Linux工具之bc计算器进制的转换

    bc是Linux下的命令行式的计算器. 题目虽然叫任意进制,但是因为bc的限制,输入进制是216范围:输出进制是2999范围.这与常见计算器的进制范围是一致的,比如windows计算器最高也只能处理1 ...

  6. linux下的16进制编辑器,Linux下的16进制编辑器 Tweak

    Linux下的16进制编辑器 Tweak 发布时间:2012-08-02 15:28:29来源:红联作者:empast tweak是可以在命令行方式下使用的16进制编辑器,在Ubuntu Linux下 ...

  7. linux双系统怎么进tty,HI3556V200 Linux+Liteos双系统学习(4)----双系统通信 IPCM/virt_tty/sharefs...

    文章目录 1 IPCM 1.1 IPCMSG 1.1.1 Linux端示例代码 1.1.2 Liteos端示例代码 1.2 DATAFIFO 1.2.1 Linux端示例代码 1.2.2 Liteos ...

  8. linux系统怎么进root用户,linux系统如何切换到root用户

    Crontab是linux下定时调度配置文件,通过它,我们可以让系统的程序.脚本.命令.任务按设定的时间.间隔.周期循环的运行. 在Crontab里时间粒度最小的是分钟.也就是说,通过Cr 2021- ...

  9. linux编写驱动后write已杀死_《Linux4.0设备驱动开发详解》笔记--第九章:Linux设备驱动中的异步通知与同步I/O...

    在设备驱动中使用异步通知可以使得对设备的访问可进行时,由驱动主动通知应用程序进行访问.因此,使用无阻塞I/O的应用程序无需轮询设备是否可访问,而阻塞访问也可以被类似"中断"的异步通 ...

最新文章

  1. 从大规模文献库中实现生物医学关系抽取
  2. NAR:浙大陈云/马忠华团队揭示病原真菌组蛋白H3K27甲基化识别新机制
  3. 苹果服务器消息转发,iphone-与APNS服务器进行交互以将推送通知发...
  4. Oracle数据库执行exp命令--报参数'log' 不允许有多个值
  5. 不限制内存用桶排序PHP
  6. OpenCV图像列表创建者imagelist creator的实例(附完整代码)
  7. 二叉堆详解实现优先级队列
  8. Elasticsearch7.15.2 出现 node validation exception 的问题处理
  9. php博客手机版模板下载器,【织梦模板下载】高端响应式游艇租赁类网站模板(自适应手机端) PHP源码带数据...
  10. PL/Sql快速执行 insert语句的.sql文件
  11. printf(%d,5.01)和printf(%f,5)的输出结果
  12. Upload LABS Pass-8
  13. asp.net如何取得客户端控件的值
  14. python手机版做小游戏代码大全-12岁的少年教你用Python做小游戏
  15. VS2010 旗舰版序列号
  16. 如果有一天不写代码了,还能干点啥?
  17. NCBI|叶绿体基因组数据上传
  18. VR虚拟现实技术类毕业论文文献都有哪些?
  19. yarn : 无法加载文件 xxxxxxxxx,因为在此系统上禁止运行脚本。
  20. CH376的串口模式操作U盘(读、写、txt文件、csv文件、串口调试讲解、stm32程序)

热门文章

  1. 云计算基础平台iaas(openstack)超级详细搭建(一)
  2. [数据结构](线性表之单链表)
  3. matlab中randn输出值,Matlab中randn函数和normrnd函数的使用,以及max返回最值
  4. 解决报错RecursionError: maximum recursion depth exceeded in comparison
  5. Python编译器怎么实现换行
  6. “天下第一比武大会”策划(一)
  7. NEAR的高性价比进场位置
  8. Vue.js前端开发实践第一章课后作业
  9. 考研日记——一个人去西安
  10. [GitHub] JavaScript 趋势榜项目(第41周)