为什么我的终端冻结了?


11

有时,当我的终端冻结时,它不会让我键入。我无法确定任何原因,也无法诊断。有什么建议?

谢谢!

Ubuntu 10.04上的GNOME Terminal 2.30.2


2
通常,当终端死机时,这是由另一个使用过多资源(例如CPU或磁盘I / O)的后台应用程序引起的。如果您top在终端中运行,则应该可以轻松地找到问题所在。
罗兰迪克(RolandiXor)

@roland-听起来像个catch 22,但是很好的建议,因为有时一个终端冻结时,我可以打开另一个终端,它将起作用。
大卫·勒鲍尔

我知道,对吧?:)有点赶不上22,但它通常对我有用。
罗兰迪克(RolandiXor)

Answers:


14

诊断神秘死机的一种好方法:

  1. 打开(ps axo pid,wchan:32,cmd另一个)终端,并用于查找其他进程ID
  2. 注意该wchan列,它应该告诉您它是否卡在内核中
  3. 运行sudo strace -p PID插入该进程的pid;将其粘贴到错误报告或问题中

如果除了wchan列中的破折号之外还有其他内容,则说明该进程在内核中正在执行某些操作。一些典型值:

  • futex_wait_queue_me -在futex中等待同一进程中的另一个线程
  • poll_schedule_timeout -等待网络或进程间通信,或仅睡一会儿
  • pipe_wait -读/写管道

有成千上万种可能性,所以我无法一一列举。请参阅什么是流程的“等待通道”?更多。


对于通用错误跟踪非常有用。您能否以一些详尽的描述来更新您的答案?wchan列中的什么消息指示卡在内核中的程序?
萨利赫·埃敏

谢谢,萨利赫。也许我们应该对一般如何诊断挂起有另一个疑问?
poolie

如果人们对其他任何价值感到好奇,请添加评论。
poolie 2012年

任何wchan表示进程正在内核中等待。如果它在这里呆了很长时间,并且没有充分的理由(例如,监听网络io),那么它就卡住了。;)
poolie 2015年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.