Tại sao thiết bị đầu cuối của tôi đóng băng?


11

Đôi khi khi thiết bị đầu cuối của tôi đóng băng và nó sẽ không cho phép tôi gõ. Tôi không thể xác định bất kỳ nguyên nhân, cũng như làm thế nào để chẩn đoán. Bất kỳ đề xuất?

Cảm ơn!

Thiết bị đầu cuối Gnome 2.30.2 trên Ubuntu 10.04


2
thông thường khi thiết bị đầu cuối đóng băng, nó được gây ra bởi một ứng dụng khác trong nền sử dụng quá nhiều tài nguyên, như CPU ​​hoặc Đĩa I / O. Nếu bạn chạy toptrong một thiết bị đầu cuối, bạn sẽ có thể xác định vấn đề dễ dàng.
RolandiXor

@roland - Nghe có vẻ như là một chiếc Catch-22, nhưng lời khuyên tốt vì đôi khi khi một thiết bị đầu cuối bị đóng băng tôi có thể mở một thiết bị khác và nó sẽ hoạt động.
David LeBauer

Tôi biết đúng không? :) Đó là một chút của một Catch-22, nhưng nó thường làm việc cho tôi.
RolandiXor

Câu trả lời:


14

Một cách tổng quát tốt để chẩn đoán hang bí ẩn:

  1. mở một thiết bị đầu cuối (nother) và sử dụng ps axo pid,wchan:32,cmdđể tìm id quá trình khác
  2. lưu ý wchancột, sẽ cho bạn biết liệu nó có bị kẹt trong kernel không
  3. chạy sudo strace -p PIDchèn pid của quá trình đó; dán nó vào một báo cáo lỗi hoặc câu hỏi

Nếu có bất cứ điều gì ngoài một dấu gạch ngang trong cột wchan, thì quá trình nằm trong kernel đang làm gì đó. Một số giá trị tiêu biểu:

  • futex_wait_queue_me - chờ đợi trên một Futex cho một chủ đề khác trong cùng một quy trình
  • poll_schedule_timeout - chờ kết nối mạng hoặc liên lạc hoặc chỉ ngủ một lúc
  • pipe_wait - đọc / viết một đường ống

Có hàng ngàn khả năng vì vậy tôi không thể liệt kê tất cả. Xem "Kênh chờ" của một quá trình là gì? để biết thêm


Rất hữu ích để theo dõi lỗi mục đích chung. Bạn có thể vui lòng cập nhật câu trả lời của bạn với một số mô tả mở rộng? Thông báo nào trong cột wchan chỉ ra một chương trình bị kẹt trong kernel?
Salih Emin

Cảm ơn, Salih. Có lẽ chúng ta nên có một câu hỏi khác về cách nói chung để chẩn đoán hang?
poolie

Nếu mọi người tò mò về bất kỳ giá trị wchan nào khác, vui lòng thêm một nhận xét.
poolie

Bất kỳ wchancó nghĩa là quá trình đang chờ trong kernel. Nếu nó ở đó trong một thời gian dài và không có lý do chính đáng như nghe io mạng, thì nó bị kẹt. ;)
poolie

25

Bạn có nhấn Ctrl + S bất kỳ cơ hội nào không? Đó là phím tạm dừng thiết bị đầu cuối dừng tất cả đầu ra cho đến khi bạn nhấn Ctrl-Q để tiếp tục.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.