我正在尝试使用trace-cmd
来收集有关我所看到的内核崩溃的更多信息。不幸的是,内核崩溃并显示“内核崩溃-不同步”消息(即套接字和文件缓冲区未刷新,因此崩溃时缓冲区中的内容不可避免地丢失了)。
是否可以使用:
trace-cmd
进程将其缓冲区刷新到文件系统或套接字吗?或由于我在虚拟化环境中运行该
trace-cmd
命令,因此我不在乎硬盘驱动器偶尔会损坏,因为我可以简单地恢复为上一个良好的快照或重新部署VM。 最佳答案
我不能保证我的食谱对您有帮助,但是谁知道:)
首先,尝试取消缓冲trace-cmd
的所有输出。你可以在那里找到一些食谱来做https://unix.stackexchange.com/questions/25372/turn-off-buffering-in-pipe
其次,内核对待在紧急情况下写入FS的做法非常危险,这没关系,但是您可以尝试在崩溃的机器外部死亡之前存储最后的信息。尝试将您的关键信息重定向到串行端口或网络连接,并在另一端捕获它。喜欢
unbuffer trace-cmd >/dev/ttyS0
另一种方法是尝试完全避免出现 panic ,并让内核工作更长的时间,但结果却无法预料。您可以在几种情况下禁用 panic 。查看
panic_on_*
目录中的/proc/sys/kernel/
设置。可以在“Documentation for /proc/sys/kernel/”中找到更多详细信息。关于linux-kernel - 在panic()发生之前使用trace-cmd/ftrace获取function_graph,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46433827/