为什么我的终端冻结了?

Dav*_*uer 11 10.04 command-line freeze

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

谢谢!

Ubuntu 10.04 上的 GNOME 终端 2.30.2

Mar*_*nas 32

你有没有按 Ctrl+S 的机会?这是停止所有输出的终端暂停键,直到您按 Ctrl-Q 恢复。

  • 有时它很有帮助,当应用程序不停地打印大量输出,并且您想让它暂停以便您可以在它从屏幕上消失之前阅读它。它也是用于 [软件流控制](https://en.wikipedia.org/wiki/Software_flow_control) 的相同控制字符,当一个设备想要告诉另一个设备慢一点时。 (3认同)

poo*_*lie 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 - 读/写管道

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