linux kill -9 杀不掉的进程

kill -9 发送SIGKILL信号给进程,将其终止,但对于以下两种情况不适用

1.该进程是僵尸进程(STAT z),此时进程已经释放所有的资源,但是没有被父进程释放。僵尸进程要等到父进程结束,或者重启系统才可以被释放。

2.进程处于“核心态”,并且在等待不可获得的资源,处于“核心态 ”的资源默认忽略所有信号。只能重启系统。

kill 只能杀死处于用户状态的进程。

下面是一个自测试例子:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <unistd.h>

#include <errno.h>

int main(int argc ,char *argv[])

{

    pid_t pid;

    pid = fork();

    if(pid<0){

        perror("fork");

        return -1;

    }else if(pid==0){

        printf("I am a child\n");

        exit(0);

    }else{

        while(1){

            sleep(100);

        }

    }

    return 0;

}

由于父进程没有退出,所以执行ps -aux | grep "z",可以查看进程的状态,发现如下(绿色标出部分)

root       1937  0.0  0.1 389000  4336 ?        Sl   09:12   0:00 /usr/bin/gnome-keyring-daemon --daemonize --login

root       4447  0.0  0.0 112680   964 pts/2    R+   10:16   0:00 grep --color=auto z

[root@localhost linux_test]# ps -aux | grep "[zZ]"

USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

root          1  0.0  0.1 128164  6828 ?        Ss   09:07   0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 21

root       1937  0.0  0.1 389000  4336 ?        Sl   09:12   0:00 /usr/bin/gnome-keyring-daemon --daemonize --login

root       4385  0.0  0.0      0     0 pts/0    Z+   10:16   0:00 [a.out] <defunct>

root       4455  0.0  0.0 112680   976 pts/2    S+   10:17   0:00 grep --color=auto [zZ]

从以上信息 可以得到该进程的进程号是4385

此时的解决方法有两种

《1》 cat /proc/4385/status   找到该子进程对应的父进程,将其父进程杀死

State: Z (zombie)

Tgid: 4385

Ngid: 0

Pid: 4385

PPid: 4384

执行kill -9 4384   如果父进程也杀不死,那就只能执行重启了

《2》重启


转载出处:

原文:https://blog.csdn.net/lemontree1945/article/details/79169178


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 又来到了一个老生常谈的问题,应用层软件开发的程序员要不要了解和深入学习操作系统呢? 今天就这个问题开始,来谈谈操...
    tangsl阅读 9,638评论 0 23
  • 文/tangsl(简书作者) 原文链接:http://www.jianshu.com/p/2b993a4b913e...
    西葫芦炒胖子阅读 9,212评论 0 5
  • 常规篇: 首先,用ps查看进程,方法如下: $ ps -ef …… smx 1822 1 0 11:38 ? 00...
    大福技术阅读 10,124评论 0 2
  • 小时候玩跳房子,随手捡起一小块这样的红砖,就近找一户人家的屋檐下的水泥台阶或屋前的水泥空地,画好格子,摘下螺丝壳做...
    小鹿姐爱吃鸡爪阅读 2,507评论 0 1
  • 每个人都会有自己认知的局限,有些人会尝试明白一个新事物,有的会选择逃避,没有对与错,只是处理的方式和自己的面对事物...
    华年轮阅读 3,110评论 0 0

友情链接更多精彩内容