我正在尝试使用trace-cmd
来收集有关我看到的内核崩溃的更多信息。不幸的是,内核崩溃时出现“内核崩溃 - 不同步”消息(即套接字和文件缓冲区没有刷新,因此崩溃时缓冲区中的任何内容都不可避免地丢失)。
有没有办法:
trace-cmd
进程将其缓冲区刷新到文件系统或套接字? OR 由于我在虚拟化环境中运行trace-cmd
命令,因此我不关心硬盘驱动器是否偶尔会损坏,因为我可以简单地恢复到最后一个好的快照或重新部署VM。
答案 0 :(得分:2)
我不能保证我的食谱会帮助你,但谁知道:)。
首先尝试取消缓冲trace-cmd
的所有输出。您可以在https://unix.stackexchange.com/questions/25372/turn-off-buffering-in-pipe
其次,内核对待恐慌写FS是非常危险的,这是可以的,但是你可以尝试在崩溃的机器之外的死亡之前存储最后的信息。尝试将关键信息重定向到串行端口或网络连接,并在另一端捕获它。像
unbuffer trace-cmd >/dev/ttyS0
另一种方法是尝试避免恐慌,让内核工作时间更长但结果不可预测。您可以针对多种情况禁用恐慌。查看panic_on_*
目录中的/proc/sys/kernel/
设置。更多详情可在“Documentation for /proc/sys/kernel/”