Linux如何杀死kill -9杀不掉的进程

这篇具有很好参考价值的文章主要介绍了Linux如何杀死kill -9杀不掉的进程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

在Linux中,我们经常使用kill或者kill -9来杀死特定的进程,但是有些时候,这些方法可能无法终止某些进程。本文将详细解释为什么会出现这种情况,以及如何处理这种问题。

无法被杀死的进程:

首先,我们来理解一下为什么有些进程无法被杀死。通常,这是因为这些进程处于以下两种状态之一:

僵尸进程(Zombie Process):

当一个进程已经完成了它的运行,但是其父进程还没有读取到它的结束状态,那么这个进程就会成为僵尸进程。僵尸进程实际上已经结束了,所以你无法使用kill命令来杀掉它。

内核态进程:

如果一个进程正在执行某些内核级别的操作(即进程处在内核态),那么这个进程可能无法接收到kill命令发送的信号。

查找和处理僵尸进程:

如果你怀疑有僵尸进程存在,你可以使用以下命令来查找所有的僵尸进程:

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

这个命令实际上是由两个命令通过管道(|)连接起来的。管道在Linux中的作用是将前一个命令的输出作为后一个命令的输入。命令的两部分是 ps -A -ostat,ppid,pid,cmd 和 grep -e '^[Zz]'。

  • ps -A -ostat,ppid,pid,cmd:这是ps命令,用来显示系统中的进程信息。
    • -A:这个选项告诉ps命令显示系统中的所有进程。
    • -o:这个选项允许你定义你想查看的输出格式。在这里,你定义的输出格式是stat,ppid,pid,cmd。这会让ps命令输出每个进程的状态(stat)、父进程ID(ppid)、进程ID(pid)以及进程运行的命令(cmd)。
  • grep -e '^[Zz]':这是grep命令,用来在输入中查找匹配特定模式的文本行。
    • -e:这个选项告诉grep命令接下来的参数是一个正则表达式。
    • '^[Zz]':这是你要查找的正则表达式。^符号表示行的开始,[Zz]表示匹配字符“Z”或者“z”。因此,这个正则表达式会匹配所有以“Z”或者“z”开头的行。在ps命令的输出中,状态为“Z”或者“z”的进程是僵尸进程。

因为僵尸进程已经结束了,所以你无法直接杀掉它。但是,你可以试图杀掉这些僵尸进程的父进程。杀掉父进程之后,僵尸进程就会被init进程(进程ID为1)接管,然后被清理掉。

你可以使用以下命令来杀掉父进程:

kill -HUP [父进程的PID]

请注意,在杀掉父进程之前,你需要确定这样做不会影响到系统的其他部分。另外,这个方法并不保证能够清理掉所有的僵尸进程。

查找和处理内核态进程:

如果一个进程处在内核态,那么这个进程可能无法接收到kill命令发送的信号。在这种情况下,你需要首先找到这个进程的父进程,然后试图杀掉父进程。你可以使用以下命令来查找进程的父进程:

cat /proc/[PID]/status | grep PPid

这个命令会输出进程的父进程的ID,由两个独立的命令组成,通过管道(|)连接起来。我会分别解释这两个命令,然后再解释整个命令:

  • cat /proc/[PID]/status :
    • 这是一个cat命令,用于显示文件的内容。在这个命令中,它用于显示一个特殊的文件/proc/[PID]/status。
    • /proc是一个特殊的目录,它是Linux内核和用户空间进行交互的一种方式。在/proc目录中,每个正在运行的进程都有一个与其PID对应的子目录。每个子目录中都包含了关于这个进程的各种信息。
    • /proc/[PID]/status文件包含了关于指定PID的进程的各种状态信息,包括进程状态、内存使用情况、父进程ID等等;
  • grep PPid :
  • 这是一个grep命令,用于在输入中查找匹配特定模式的文本行。在这个命令中,它用于查找包含PPid的行。在/proc/[PID]/status文件中,PPid一行包含了这个进程的父进程的PID;

然后,你可以使用以下命令来杀掉父进程:

kill -9 [父进程的PID]

同样,你需要在杀掉父进程之前确定这样做不会影响到系统的其他部分。另外,这个方法并不保证能够杀掉所有的内核态进程。

结论:

在Linux系统中,处理无法被杀死的进程可以是一项挑战,尤其是当你无法确定进程状态或者无法影响父进程的时候。以上的方法并不保证能够解决所有问题。如果你尝试了所有的方法,但问题仍然存在,或者你不确定如何进行,那么你可能需要联系系统管理员,或者寻求专业的技术支持。

总的来说,处理无法被杀死的进程需要对Linux的进程管理有深入的理解,以及足够的耐心和谨慎。希望这篇文章能够帮助你更好地理解这个问题,以及如何解决这个问题。

Linux中每个进程的状态(stat)

Linux中每个进程的状态(stat)_加油当当的博客-CSDN博客

/proc/[PID]/status中的内容

/proc/[PID]/status中的内容_加油当当的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-704132.html

到了这里,关于Linux如何杀死kill -9杀不掉的进程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一个 Kill 不掉的 MySQL 会话

    究竟是什么原因,导致主从切换过程中存在一个无法 kill 的会话? 作者:秦广飞 爱可生 DBA 团队成员,负责项目日常问题处理及公司平台问题排查,对数据库有兴趣,对技术有想法。一入 IT 深似海,从此节操是路人。 本文来源:原创投稿 爱可生开源社区出品,原创内容未经

    2024年02月12日
    浏览(37)
  • 终止进程后,GPU显存仍被占用问题 | kill -9彻底杀死进程 | ps aux|grep python

    本文部分内容参考博客,十分感谢!!! 问题描述:在Linux终端把进程终止后,发现显存没有被释放出来! Figure 1 这个命令是在Linux操作系统中使用的,用于列出当前运行的进程,并通过管道(|)将其结果传递给grep命令来筛选包含特定文本的行。具体来说, ps aux | grep 命令

    2024年02月21日
    浏览(25)
  • linux c++ 根据进程名杀死一个进程

    一、知识点储备 环境:centos6 , x86,g++ 需求:输入参数:进程名和超时时间;功能:杀死超时的进程 杀死进程的方法 :前期考虑用boost::process库以达到跨平台的目的,但是学习之后发现该库是用来管理子进程的,不能用来杀死一个不相干的进程。在linux中杀死一个进程可以使

    2024年02月17日
    浏览(30)
  • Linux 进程查找、杀死方案集合

    方式一 ps 命令:显示当前活动进程的快照。 方式二 top 命令:实时显示系统中运行的进程和系统资源使用情况。它按 CPU 使用率排序进程,并更新显示。 方式三 pgrep 命令:根据进程名或其他属性来查找并打印匹配的进程 ID 。 方式四 pidof 命令:查找指定名称的进程的进程

    2024年02月15日
    浏览(29)
  • Linux根据端口号杀死进程

    步骤一:查看8083端口占用情况 步骤二:根据PID杀死进程

    2024年02月16日
    浏览(24)
  • linux下查看php进程,开启php-fpm&杀死php进程

    1、查看php进程 出现如图结果说明未开启 2、查看php安装路径 3、开启php-fpm 再次查看ps -ef |grep php 以树状图的方式展现php进程 4、关闭php-fpm

    2024年02月11日
    浏览(32)
  • linux下kill某个用户所有进程

    参考:linux下4种kill某个用户所有进程的方法_lihuaichen的博客-CSDN博客_linux杀死所有python         使用: top 或者 ps 查看当前用户的运行进程;         使用  kill pid方式可以 杀死某个想杀死的进程; 那么想kill掉所有进程的方法:(4种)         pkill方式:      

    2024年02月11日
    浏览(30)
  • Linux查看进程PID的方法(linux查进程的pid)附带自动kill 掉

    Linux查看进程PID的方法 Linux作为一款多用户、多任务的操作系统,可以同时处理多个任务,每个任务的执行都由进程来实现。在每个进程执行的过程中,都会有一个唯一标识符,即称为PID(Process Identifier)进程ID。Linux系统有很多命令用来查看进程PID,下面介绍几种常用的查看

    2024年02月01日
    浏览(75)
  • linux 命令 查找进程然后杀掉 ps -ef|grep xxx , kill -9 xxx

    今天在虚拟机里安装jenkins,安装完后运行正常,可以正常访问页面。 安装成功后,我想在命令行kill 掉这个进程,以下是我的操作。 ps -ef |grep java, 可以看到有以下结果,除了jenkins自己的进程外,还有grep java 这个进程。 ok,我们kill 掉jenkins, 执行命令 kill -9 11967 命令执行

    2024年02月08日
    浏览(37)
  • 关于 RK3568的linux系统killed用户应用进程(用户现象为崩溃) 的解决方法

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/132710642 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…   RK3568运行播放7路rtsp播放,时

    2024年02月09日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包