所以我有一个命令使计算机崩溃,我想查看 dmesg 的输出以找出原因。
我看到有一个-w
选项允许 dmesg 跟踪该过程,但问题是它不会退出,所以我无法运行以下命令dmesg -w
。
我试过
> #!/bin/bash
> dmesg -w &
> echo image.raw | /sys/device/platform/inject_frame
但这仍然没有在后台运行。对我能做什么有什么建议吗?
我使用的内核版本是4.9.241
编辑:解决方案由 Harry 提供,位于评论部分。最后我做了(sudo journal -fk | sudo dd=log.txt) &
我想做的事,即将以下操作的日志捕获到 log.txt
要了解journalctl与dmesg有何不同,您可以在这里查看: https://www.reddit.com/r/redhat/comments/n3b278/can_someone_briefly_explain_the_major_differences/ dmesg和journalctl有什么区别
答案1
strace -p pid
更适合了解程序运行时发生的情况,并且不需要 root 权限。您可以像这样在后台运行它:
nohup strace -p pid &
并跟随跟踪tail -f nohup.out