如何杀死内核线程?我真的想这样做吗?


8

正如我从这个问题中学到的,[bracketed]ps aux命令列出的进程是内核线程。那么有没有办法从命令行杀死它们?如果不是,我想这是为了使用户免于遭受内核恐慌的更高风险,对吗?

Answers:


9

您不能杀死内核线程或在D状态下被阻塞的任何进程,因为仅当内核返回用户模式时才传递信号。除了信号传递的技术局限性之外,杀死内核代码中间的线程还会破坏系统,因为内核代码当时可能持有重要的资源,例如自旋锁或互斥锁,而杀死线程则可以防止那些资源被释放。

如果您的进程长时间处于D状态,那么您将遇到内核错误。有关报告它的提示,请参见https://wiki.ubuntu.com/KernelTeam/KernelTeamBugPolicies


2

内核线程是内核创建的用于管理系统的必要线程。

并非所有都是必要的,而是所有(大多数)都是有益的,并且几乎不需要额外的资源,因此没有理由在正常情况下会考虑杀死内核线程。

Linux内核可以在必要时创建销毁那些线程,您不必担心它们,并且在大多数情况下都无法杀死它们。


如果我有一个线程处于不间断的睡眠状态,该线程阻塞了系统资源,例如我想通过杀死该线程来释放的系统资源,例如安装有坐骑的设备或其他硬件,该怎么办?
数学

1
如果您认为它有用(并且不会对您的系统造成故障),请提交针对它的错误,并希望它尽快解决。
布鲁诺·佩雷拉

在决定杀死内核线程是解决方案之前,我将尝试找出安装的问题。
布鲁诺·佩雷拉

我不是内核黑客,而是某些内核驱动程序的用户。如果某些设备无法正常工作,我当然应该报告错误,但是我必须等待至少半年,因此下一个ubuntu会带来此错误修复。我认为这是一个有效的方案,Linux内核应该可以中止某些操作并释放资源(如果有的话)。
数学

您可能无法理解内核线程很可能是由另一个进程启动的,因此该内核线程可能没有什么问题,除了启动的进程忘记关闭它。我理解您在说什么,但我认为杀死内核线程甚至不建议这样做。
布鲁诺·佩雷拉
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.