僵尸进程

1、定义:

一个已经终止,但是其父进程尚未对其进行善后处理(获取终止子进程的有关信息、释放它仍占用的资源)的进程被称为僵死进程(Zombie Process)。

2、查看方法:

ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]'

-A 参数列出所有进程
-o 自定义输出字段 我们设定显示字段为 stat(状态), ppid(进程父id), pid(进程id),cmd(命令)这四个参数

3、清除方法:

1.改写父进程,在子进程死后要为它收尸。具体做法是接管SIGCHLD信号。可以设置一个处理函数wait() 或waitpid()。

2.把父进程杀掉。父进程死后,僵尸进程成为"孤儿进程",过继给1号进程init,init始终会负责清理僵尸进程.它产生的所有僵尸进程也跟着消失。

3.如果僵尸进程很多,影响了系统性能,可以重启系统。

4、引用别人的一个实例:

使用一条简单的命令,直接查找僵死进程,然后将父进程杀死。

ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9

awk命令 :

文本处理工具,处理对象是文本文件,主要是对列进行操作。默认使用增强的正则表达式(EREs)。
awk使用方法
awk '{pattern + action}' {filenames}。

以上例子中是对查询结果进行处理,不是对文本文件进行处理。

xargs命令:

xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理。

通常情况下,xargs从管道或者stdin中读取数据,但是它也能够从文件的输出中读取数据。xargs的默认命令是echo,这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。

xargs是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令

原文地址:https://www.cnblogs.com/live-fine/p/3514835.html