有没有办法列出linux设备中所有被杀死的进程?
我看到这个答案暗示:
报到:
/var/log/kern.log
但它不是通用的。还有其他方法吗?
我想做的事:
列出线程/进程是否被杀死。我应该编辑内核中的什么函数来列出所有被杀死的 tid/pid 及其名称,或者无论如何是否有sysfs
它?
有没有办法列出linux设备中所有被杀死的进程?
我看到这个答案暗示:
报到:
/var/log/kern.log
但它不是通用的。还有其他方法吗?
列出线程/进程是否被杀死。我应该编辑内核中的什么函数来列出所有被杀死的 tid/pid 及其名称,或者无论如何是否有sysfs
它?
首先,内核中的任务和线程上下文是不同的。任务(使用 tasklet api)在软件中断上下文中运行(意味着您在任务 ctx 中时不能睡眠),而线程(使用 kthread api 或 workqueue api)在进程 ctx 中运行处理程序(即可以睡眠的 ctx)。
在这两种情况下,如果一个线程在 kerenl 中挂起,您就无法杀死它。如果你从 shell 运行“ps”命令,你可以在那里看到它(通常带有“[”和“]”大括号),但任何试图杀死它的尝试都行不通。
内核是受信任的代码,这种情况不应该发生,如果发生,则表明存在内核(或内核模块)错误。
通常整台机器会在一段时间后运行,因为运行该线程的核心没有响应(您将在 /var/log/messages 或控制台中看到一条消息,其中包含更多信息)在某些其他情况下,机器可能会存活但特定的核心死了。取决于内核配置。