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