如何调查 Linux 无响应的原因?

如何调查 Linux 无响应的原因?

抱歉,我写的问题不是很具体。我在 Debian 测试中使用 KDE4,并且经常使用 KDE 的文件管理器 Dolphin,大多数时候都没有问题。最近,我想在系统更新后,Dolphin 经常反应迟钝。这可能直接发生在启动时 - 一分钟左右后窗口才会出现 - 也可能在一切正常一段时间后发生。窗口内容不再更新,单击文件后需要很长时间才能打开文件,等等。重新启动有时可以使问题消失,但不会持续太久。我认为这可能与光驱访问有关,但即使驱动器中没有介质,问题仍然存在。- 我没有安装任何网络文件系统。也没有其他进程占用 CPU 时间和/或磁盘带宽。

现在问题我问的不是关于 Dolphin 的这个特定问题,而是这个:

我通常如何处理程序无响应的情况?是否有标准策略来找出导致此类问题的原因,以便 1) 我可以找到自己的修复或解决方法和/或 2) 能够提交有用的错误报告?

在这种情况下,因为我认为这可能与 Dolphin 尝试访问某些文件并因为某种阻塞而挂起有关,所以我启动了 dolphinstrace并试图理解这些消息。但是,有很多“错误”类型为“EAGAIN(资源暂时不可用)”或“ENOENT(没有这样的文件或目录)”,其中大多数似乎并不代表问题。我唯一可靠地了解到的是,即使 Dolphin 对用户输入没有反应,也并不意味着没有对鼠标移动和鼠标点击做出很多响应……

是否是strace合适的工具?如果是,我应该在其输出中寻找什么?如果不是,我应该使用什么?

答案1

好吧,strace 会打印出程序执行的系统调用列表。使用它可能很有用,并且具有教育意义,但如果您不是程序员,它可能不太实用。

htop

如果您想要让响应缓慢的系统恢复到工作状态,那么我发现最有用的程序之一就是 htop。基本上,它会在终端中显示实时系统使用情况。您应该阅读一些相关内容 - 它有非常详尽的文档,并且已经发表了不少关于它的文章。您可以在终端中使用它,因此如果您的桌面已冻结,但您仍然可以通过 ssh 登录计算机,它就可以工作。例如,通过 pUTTY 从您的 Windows 机器登录。它为您提供进程列表并显示有关它们的最重要信息。使用 F6,您可以按特定资源使用情况(例如处理器、内存、交换)对进程进行排序,从而可以看到哪个程序占用了大量资源。使用 F4,您可以按程序名称进行过滤 - 只需开始输入即可。F5 显示您的进程树,并可能会显示您的程序打开了哪些文件。使用 F9,您可以向程序发送您想要的任何 KILL 信号。很棒的是 - 您只需使用箭头键上下移动并按数字键选择选项 - 您应该进行一些实验才能体会到这一点。

我的经验法则是 - 如果系统没有挂起太久,按 Num Lock 不会使 NumLock 灯闪烁,那么进行一些简单的调查和 - htop 的 SIGHUP 或 SIGKILL 可能会使其恢复稳定。如果情况重复出现 - 那么您可以填写错误报告。

相关内容