Terminalim neden donuyor?


11

Bazen terminalim donar ve yazmama izin vermez. Herhangi bir nedeni veya nasıl teşhis koyacağımı tanımlayamıyorum. Herhangi bir öneri?

Teşekkürler!

Ubuntu 10.04 üzerinde GNOME Terminal 2.30.2


2
genellikle terminal donarsa, CPU veya Disk G / Ç gibi çok fazla kaynak kullanan arka plandaki başka bir uygulamadan kaynaklanır. Eğer çalıştırırsanız topbir terminalde, kolayca sorunu bulmak mümkün olmalıdır.
RolandiXor

@ roland - bir catch-22 gibi geliyor, ancak iyi bir tavsiye çünkü bazen bir terminal donduğunda başka bir tane açabilirim ve çalışacaktır.
David LeBauer

Doğruyu biliyorum? :) Biraz yakalamak-22, ama genellikle benim için çalışıyor.
RolandiXor

Yanıtlar:


14

Gizemli askıları teşhis etmenin iyi bir genel yolu:

  1. (noter) bir terminal açın ps axo pid,wchan:32,cmdve diğer işlem kimliğini bulmak için kullanın
  2. wchançekirdeğe takılıp takılmadığını gösteren sütunu not edin
  3. çalıştırmak sudo strace -p PIDbu sürecin PID sokulması; bunu bir hata raporuna veya soruya yapıştır

Wchan sütununda sadece bir tire dışında bir şey varsa, o zaman süreç çekirdek bir şey yapıyor. Bazı tipik değerler:

  • futex_wait_queue_me - aynı süreçte başka bir iş parçacığı için bir futex beklemek
  • poll_schedule_timeout - ağ veya süreçler arası iletişimi beklemek veya sadece bir süre uyumak
  • pipe_wait - boru okuma / yazma

Binlerce olasılık var, bu yüzden hepsini listeleyemiyorum. Bkz . Bir işlemin "Bekleyen Kanal" nedir? daha fazlası için.


Genel amaçlı hata izleme için çok kullanışlıdır. Cevabınızı kapsamlı bir açıklama ile güncelleyebilir misiniz? Wchan sütunundaki hangi mesaj çekirdekte sıkışmış bir programı gösterir?
Salih Emin

Teşekkürler Salih. Belki de asmak için genel olarak nasıl teşhis konulacağı konusunda başka bir sorumuz olmalı?
poolie

İnsanlar başka herhangi bir wchan değerini merak ediyorlarsa, lütfen bir yorum ekleyin.
poolie

wchanSüreç çekirdeğinde bekleyen her türlü araç. Uzun bir süre orada kalırsa ve ağ io'yu dinlemek gibi iyi bir sebep yoksa, sıkışmış demektir. ;)
poolie

25

Hiç şans eseri Ctrl + S tuşlarına bastınız mı? Devam etmek için Ctrl-Q tuşlarına basıncaya kadar tüm çıkışı durduran terminal duraklatma anahtarıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.