这是关于如何查找Linux系统僵尸进程并进行杀死的小知识。您还可以了解一些有关进程和僵尸进程的知识。在了解僵尸进程之前,我们先来回顾一下什么是Linux进程。简而言之,进程是程序的运行实例。它可能运行在前端(例如交互式进程),也可能运行在后端(例如非交互式或自动进程)。它可能是父进程(由其他进程在运行时创建),也可能是子进程(由其他进程创建)。在Linux系统中,除了第一个PID为0的init进程(或systemd)外,其他所有进程都有一个父进程。进程也可以有自己的子进程。不相信?可以尝试在终端中使用pstree命令查看进程的树状结构,可以看到系统中各个进程的“家谱”。Linux系统中的僵尸进程是什么?子进程死后,其父进程会收到通知,执行一些清理操作,比如释放内存。但是,如果父进程不知道子进程的死亡,子进程就会进入“僵尸”状态。从父进程的角度来看,子进程仍然存在,尽管子进程实际上已经死了。这就是“僵尸进程”(也称为“失效进程”)在系统中诞生和存在的方式。这是Turnoff.us对僵尸进程的一个非常有趣的看法:图片来源:Turnoff.us你真的需要关心僵尸进程吗?重要的是僵尸进程看起来并不像它的名字所暗示的那样可怕。但是如果系统内存不足或者有太多的僵尸进程占用内存,问题就会变得更糟。同样,大多数Linux系统进程的最大PID为32768,如果僵尸进程太多而没有PID可用于其他重要任务,您的系统就会崩溃。这确实会发生,并且有一定的可能性,特别是如果有一个编码不当的程序开始产生僵尸进程。在这种情况下,找到并杀死僵尸进程是明智的做法。如何查找僵尸进程Linux系统中的进程可以处于以下状态之一:D=不间断睡眠I=空闲R=运行S=睡眠T=被调度信号终止t=被调试器终止Z=僵尸state那么如何查看进程及其当前状态呢?一种简单的方法是在终端中使用top命令。top命令showprocessesandtheirstatus如上图所示,截图中有250个任务(进程),其中1个处于“运行”状态,248个进程处于“休眠”状态,还有1个处于“僵尸”状态。现在问题进入下一步,如何杀死“僵尸”进程?如何找到并杀死僵尸进程?僵尸进程可以被杀死吗?僵尸进程死了,如何杀死一个死进程?在僵尸电影里,你可以射僵尸的脑袋或者烧掉它们,但这在这里行不通。您可以通过点燃系统来杀死僵尸进程,但这不是一个可行的解决方案。有人建议向父进程发送SIGCHLD,但这个信号很可能会被忽略。还有一种方法是通过杀死父进程来杀死僵尸进程,这听起来很野蛮,但这是确保僵尸进程被杀死的唯一方法。首先,我们在终端中使用ps命令列出僵尸进程并获取它们的进程ID:psux|awk'{if($8=="Z+")print}'psux命令输出的第8列显示进程状态。上面的命令只会打印所有处于Z+状态(意思是僵尸状态)的进程。确认进程ID后,我们就可以得到它的父进程ID:ps-oppid=-p
