Чому мій термінал замерзає?


11

Іноді, коли мій термінал замерзає, і це не дозволить мені набрати. Я не можу визначити ні причини, ні як поставити діагноз. Будь-які пропозиції?

Спасибі!

Термінал GNOME 2.30.2 на Ubuntu 10.04


2
зазвичай, коли термінал заморожується, це викликано іншою програмою у фоновому режимі, що використовує занадто багато ресурсів, наприклад, процесор або введення / виведення диска. Якщо ви працюєте topв терміналі, ви зможете легко знайти проблему.
RolandiXor

@roland - це схоже на лову-22, але хороша порада, оскільки іноді, коли один термінал заморожений, я можу відкрити інший, і він спрацює.
Девід Лебоуер

Я знаю правильно? :) Це трохи улов-22, але це часто працює для мене.
RolandiXor

Відповіді:


14

Хороший загальний спосіб діагностики таємничих висів:

  1. відкрийте (інший) термінал і використовуйте ps axo pid,wchan:32,cmdдля пошуку іншого ідентифікатора процесу
  2. зверніть увагу на wchanстовпець, який повинен повідомити, чи застряг він у ядрі
  3. запустіть sudo strace -p PIDвставку pid цього процесу; вставити це у звіт про помилку чи запитання

Якщо в стовпці wchan є щось окрім просто тире, то процес полягає в тому, що ядро ​​щось робить. Деякі типові значення:

  • futex_wait_queue_me - очікування на футексі для іншої нитки в тому ж процесі
  • poll_schedule_timeout - очікування мережевого або міжпроцесорного зв’язку або просто спати деякий час
  • pipe_wait - читання / запис труби

Є тисячі можливостей, тому я не можу перерахувати їх усіх. Дивіться, що таке "канал очікування" процесу? для більш.


Дуже корисно для відстеження помилок загального призначення. Чи можете ви, будь ласка, оновити свою відповідь деяким обширним описом? Яке повідомлення в колонці wchan вказує на програму, яка застрягла в ядрі?
Салих Емін

Спасибі, Саліх. Можливо, у нас повинно виникнути ще одне питання про те, як взагалі діагностувати висі?
poolie

Якщо люди цікавляться будь-якими іншими значеннями wchan, додайте коментар.
poolie

Будь-які wchanзасоби процес чекають у ядрі. Якщо він залишається там тривалий час і без поважних причин, як-от слухати мережу io, то він застряг. ;)
poolie

25

Ви випадково натискали Ctrl + S? Це клавіша паузи терміналу, яка зупиняє весь вихід, поки не натисніть Ctrl-Q для відновлення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.